PB4.30: Abfrage von Comboxevent

Anfängerfragen zum Programmieren mit PureBasic.
kajott
Beiträge: 35
Registriert: 21.11.2005 02:00

PB4.30: Abfrage von Comboxevent

Beitrag von kajott »

Hallo,

wenn ich in einem Programm auf eine Combobox klicke, wird dieses Event jedesmal zweimal aufgerufen. Nämlich dann, wenn ich auf den Auswahlpfeil (um die Combox zu öffnen) klicke und nachdem ich dann in der Auswahlliste meine Auswahl getroffen habe nochmal.

Das würde ich gerne verhindern, da ich mit der Auswahl in der Combobox jedesmal Daten von der Festpaltte automatisch in ein Array schreiben will. Problem hierbei ist, das beim ersten Klick zum öffnen die Daten des aktuellen Comboxeintrags geladen werden und nach meiner Auswahl in der Liste die gewünschten Daten geladen werden.

Wie also kann ich verhindern, das der erste klick schon einen Event in der Combobox auslöst?

Für Antworten im voraus herzlichen dank!
Benutzeravatar
unix
Beiträge: 361
Registriert: 15.02.2005 19:25
Wohnort: Zwischen Coburg und Bamberg :-)
Kontaktdaten:

Beitrag von unix »

bin nicht sicher aber meinst du zufällig EventType() oder EventGadget() ich Denke EventGadget() kannst du gut verwenden dafür und zwar so:

Code: Alles auswählen

Repeat
  Select WaitWindowEvent()
  Case #PB_Event_Gadget
    Select EventGadget()
    Case #ComboBox_0
      Lock = 1
    Default
      If Lock=1
        ;
        ;hier dein Code
        ;wird erst aufgerufen wenn von der Combo kein event mehr kommt
        ;
        Lock=0
      EndIf
    EndSelect
    
  Case #PB_Event_CloseWindow
    Quit=1
  EndSelect
Until Quit=1
kannst ja noch irgendwie nen Timeout einbauen oder deine events zählen lassen
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
kajott
Beiträge: 35
Registriert: 21.11.2005 02:00

Beitrag von kajott »

Danke für den Hinweis.
Habe mich aber zu einer anderen Vorgehensweise durchgerungen.
Frage nach dem Event (der eine Prozedur aufruft) ab, ob die Daten schon geladen sind. Wenn "Ja", dann eben nicht laden. Wenn "Nein", dann laden.

Trotzdem nochmal "Danke"!
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Unter Windows kannst du folgendes versuchen :

Code: Alles auswählen

  If OpenWindow(0, 0, 0, 270, 140, "ComboBoxGadget", 13107201) 
    ComboBoxGadget(0, 10, 10, 250, 21) 
    AddGadgetItem(0, -1, "ComboBox editable...") 
    AddGadgetItem(0, -1, "ComboBox editable. 3..") 
    
    Repeat 
      event = WaitWindowEvent() 
      
      If event = #PB_Event_Gadget 
        
        If EventGadget() = 0 And EventType() = #CBN_SELCHANGE
          
          Debug "change" 
          
        EndIf 
        
      EndIf 
      
    Until event = #PB_Event_CloseWindow 
    
  EndIf 
Antworten