Seite 1 von 1

Aktivierung überlappender Gadgets

Verfasst: 01.01.2014 11:04
von ProgOldie
Hallo, zunächst allen einen guten Start ins Neue Jahr!
Ich habe ein Listicongadget und ein Comboboxgadget. Zunächst ist die Combobox unsichtbar. Erst wenn ich per Doppelklick auf das Listicon klicke soll die Combobox sichtbar werden - und aufklappbar sein. Letzteres bekomme ich einfach nicht hin.

Code: Alles auswählen

EnableExplicit
Define index.i,Spalte.i,Text.s,Ev.i,EvGad.i,EvTyp.i

Enumeration
  #WinNr
  #LicGad
  #ComboGad
EndEnumeration

OpenWindow(#WinNr,50,50,500,500,"Datenfenster")
ListIconGadget(#LicGad,10,10,300,400,"Spalte 0",100)
AddGadgetColumn(#LicGad,1,"Spalte1",100)
AddGadgetColumn(#LicGad,2,"Spalte2",100)
For index=1 To 10
  Text=""
  For Spalte=0 To 2
    Text+"Z="+Str(index)+"Sp="+Str(Spalte)+Chr(10)
  Next
  AddGadgetItem(#LicGad,-1,Text)
Next

ComboBoxGadget(#ComboGad,50,50,70,20)
SetGadgetItemText(#ComboGad,-1,"Auswahl A")
SetGadgetItemText(#ComboGad,-1,"Auswahl B")
SetGadgetItemText(#ComboGad,-1,"Auswahl C")
SetGadgetState(#ComboGad,1)
HideGadget(#ComboGad,1)      ;Gadget zunächst unsichtbar, bis Doppelclick auf Liste

Repeat
  Ev=WaitWindowEvent()
  Select Ev
    Case #PB_Event_Gadget
      EvGad=EventGadget()
      EvTyp=EventType()
      Select EvGad
       Case #ComboGad 
          ;... klappe ComboBox auf  
       Case #LicGad       ;Ereignis für Listicongadget
         Select EvTyp 
           Case #PB_EventType_LeftDoubleClick  ;Doppelclick auf Listicongadget
             HideGadget(#ComboGad,0)           ;ComboBox anzeigen
             SetActiveGadget(#ComboGad)         ; Focus auf ComboBox
           Case #PB_EventType_LeftClick         ;Einzelklick
         EndSelect  
     EndSelect
  EndSelect
Until Ev=#PB_Event_CloseWindow
Die sichtbare Combobox klappt beim Anklicken einfach nicht auf, weil offenbar das Listicongadget den Click abfängt. Wie kann ich mein Ziel erreichen, dass die Combobox auklappt?

Re: Aktivierung überlappender Gadgets

Verfasst: 01.01.2014 11:31
von hjbremer

Code: Alles auswählen

ComboBoxGadget(#ComboGad,0,22,100,22)
AddGadgetItem(#ComboGad, -1,"Auswahl A")
AddGadgetItem(#ComboGad, -1,"Auswahl b")
AddGadgetItem(#ComboGad, -1,"Auswahl c")
SetGadgetState(#ComboGad,1)
HideGadget(#ComboGad,1)      ;Gadget zunächst unsichtbar, bis Doppelclick auf Liste

SetParent_(GadgetID(#ComboGad), GadgetID(#LicGad))
Aber ohne Windows Api und Callbacks für beide Gadgets wirds schwer.

Nimm doch ein PopUp Menu, welches sich beim Doppelklick öffnet.

Re: Aktivierung überlappender Gadgets

Verfasst: 01.01.2014 12:13
von ProgOldie
Hm, mit SetParent_() muss ich mich erst einmal beschäftigen.
Als einfachste Lösung bin ich eben darauf gekommen, beim Erscheinen des ComoboxGadgets ein DisableGadget(#LicGad,1) einzufügen. Dann kann man das gut aufklappen. Einziger Haken, ich muss ein Event für die Combobox finden, bei dem das Listicongadget wieder mit DisableGadget(#LicGad,0) aktiviert wird.

Danke erstmal.