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... :cry:

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.