Seite 1 von 2
Doppelklick auf ListIcon?
Verfasst: 11.06.2006 12:08
von Jilocasin
Wie kann ich in 4.0 das abfragen?
Hab schon alles mögliche ausprobiert, aber da kommt weder bei "WindowEvent()" noch bei "EventType()" etwas raus!
Hilfe...

Verfasst: 11.06.2006 12:12
von edel
>>
Hab schon alles mögliche ausprobiert
Sicher ?
Code: Alles auswählen
*hWindow.long = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,640,480,"")
CreateGadgetList(*hWindow\l)
ListIconGadget(0,0,0,640,480,"bla",200)
Repeat
uMsg = WaitWindowEvent()
If uMsg = #pb_event_gadget
If EventGadget() = 0
If EventType() = #PB_EventType_LeftDoubleClick
MessageRequester( "" , "Doppelklick")
EndIf
EndIf
EndIf
Until uMsg = #WM_CLOSE
Verfasst: 11.06.2006 12:13
von Jilocasin
ja schon klar!
So hab ichs auch gemacht...
Das Problem ist, mein Source ist schon 2000 Zeilen lang..
Ich werd das jetzt noch ma gründlich scanne.....
// nachtrag
Hmm... ???
Ich glaube es liegt daran, dass ich das Gadget in einem Unterfenster hab!
Also im Hauptfenster ist mittels "SetParent_(Unterfenster,hWnd)" ein zweites Fenster drin. Darin befindet sich das Gadget.
@kaeru: daran liegts (leider) nicht !
Verfasst: 11.06.2006 12:15
von Kaeru Gaman
o_O
öh.. die events beider fenster müssten trotzdem in deiner hauptschleife ankommen...
Verfasst: 11.06.2006 12:17
von Jilocasin
Wenn ich das so mache...
Code: Alles auswählen
...
Repeat
EventID = WindowEvent()
EventType = EventType()
EventWindowID = EventWindow()
Delay(10)
If EventID = #PB_Event_Gadget
Debug EventGadget()
EndIf
...
wird bei einem "normalen" Gadget die Nummer debuggt. Klicke ich aber aus das ListIcon so passiert garnix!
Verfasst: 11.06.2006 12:23
von edel
Dann eben so.
Code: Alles auswählen
*hWindow0.long = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,360,240,"")
CreateGadgetList(*hWindow0\l)
ListIconGadget(0,0,0,360,240,"bla 1",200)
*hWindow1.long = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,360,240,"")
CreateGadgetList(*hWindow1\l)
ListIconGadget(1,0,0,360,240,"bla 2",200)
Repeat
uMsg = WaitWindowEvent()
If uMsg = #pb_event_gadget
If EventWindow() = *hWindow0
If EventGadget() = 0
If EventType() = #PB_EventType_LeftDoubleClick
MessageRequester( "" , "Doppelklick Fenster 1")
EndIf
EndIf
ElseIf EventWindow() = *hWindow1
If EventGadget() = 1
If EventType() = #PB_EventType_LeftDoubleClick
MessageRequester( "" , "Doppelklick Fenster 2")
EndIf
EndIf
EndIf
EndIf
Until uMsg = #WM_CLOSE
Verfasst: 11.06.2006 12:34
von Jilocasin
Vardammt!
Ich kapiere einfach meinen Fehler nich!
Es müsste doch so funktionieren!
Verfasst: 11.06.2006 12:41
von Kaeru Gaman
@jilo
das Delay(10) brennt mir ja die pupillen aus. nimm doch mal sowas aus deiner event-schleife...
aber daran wirds nicht unbedingt liegen, wenn die anderen events gehen..
@edel
wäre es nicht evtl. besser EventWindow() nur einmal aufzurufen,
rückspeichern und später wert vergleichen?
und für so fenster-n00bs wie mich:
1. muss ich das handle als pointer speichern?
2. wieso #PB_Ignore? setzt das das fenster an die standard-stelle, also, immer eine leistenbreite nach rechts unten und dann oben wieder anfangen?
Verfasst: 11.06.2006 12:52
von Jilocasin
kaeru hat geschrieben:nimm doch mal sowas aus deiner event-schleife
Ups.. jup stimmt.
Bis jetzt hatte ich 3.3. Da gab es den Zeit-Parameter bei "WaitWindowEvent()" noch nich. Werd ich ändern!
Ich hab mal zum Testen ein ganz eigenes, unabhängiges Gadget auf dem Hauptfenster erstellt. Bringt überhaupt nichts! Es kommt hier einfach bei ListIcons/ListViews kein Event zustande!
Verfasst: 11.06.2006 12:55
von Kaeru Gaman
> Bis jetzt hatte ich 3.3. Da gab es den Zeit-Parameter bei "WaitWindowEvent()" noch nich.
ich hab auch erst seit gestern 4.0, aber ich hab nie ein Delay mit mehr als 0 in einer event-schleife benutzt.
Delay(0) genügt völlig, um die CPU zu entlasten!
jeder höhere wert verschluckt nur events.