Verständnisfrage zu Fenstern

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
ne555
Beiträge: 24
Registriert: 12.01.2008 03:29

Beitrag von ne555 »

@ts-soft
waitWindowEvent, klar hast du oben ja schon mal erwähnt.
Wer lesen kann ist klar im Vorteil.:oops:
Damit hab ich ne Auslastung von 2%
Danke
Benutzeravatar
ne555
Beiträge: 24
Registriert: 12.01.2008 03:29

hänge schon wieder

Beitrag von ne555 »

Nun hänge ich schon wieder.
Die Behandlung von ButtonGadgets habe ich in einem Tutorial so gelernt, wie ich es im Code gemacht habe. Ich habe drei ButtonGadget die ich Abfragen möchte.
Button Speicher(101) (beendet momentan nur das aktive Fenster)
Button Abbrechen(102) (beendet das aktive Fenster)
Button Übernehmen(103) (Ausgewählte COM-Einstellung sollen in einen Konfigurations String übernommen werden.)

Wenn ich den Übernehmen Button anklicke durchläuft das Programm die if Abfrage wieder und wieder, bis ich auf irgend ein anderes Element klicke.
Ich suche mich in der Hilfe tot und finde einfach nichts, wie ich den Focus (103) wieder los werde.
Ich kenne von VB her das Klick-Ereignis OnClick. Wird dieses angewählt wird der Ereignis-Code beim Klicken nur einmal ausgeführt.

Versucht habe ich es z.B. mit SetGadgetState() und SetActiveGadget.

Code: Alles auswählen

    Repeat
     EventID = WaitWindowEvent(1)
      If EventID = #PB_Event_CloseWindow ; Auf Seite schließen abfragen 
         Exit = 1
      EndIf
      If EventGadget() = 101 ; Auf Speichern abfragen
         Exit = 1
      EndIf
      If EventGadget() = 102 ; Auf Abbrechen abfragen
          Exit = 1
      EndIf  
      If EventGadget() = 103 ; Einstellungen übernehmen
          com      = GetGadgetText(104)
          baud     = GetGadgetText(105) 
          parity   = GetGadgetText(106)
          databit  = GetGadgetText(107)
          stopbit  = GetGadgetText(108)
          Neu_konf = com + ": baud=" + baud + " parity=" + parity + " data=" + databit + " stop=" + stopbit 
          Akt_konf = Neu_konf
          MyCom    = Akt_konf
      EndIf 
     
      Until Exit = 1

[/code]
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: hänge schon wieder

Beitrag von Kiffi »

@ne555: Du musst zuvor auf #PB_Event_Gadget prüfen:

Code: Alles auswählen

Repeat

  EventID = WaitWindowEvent(1)
  
  If EventID = #PB_Event_CloseWindow ; Auf Seite schließen abfragen 
    Exit = 1
  EndIf
  
  If EventID = #PB_Event_Gadget
    
    If EventGadget() = 101 ; Auf Speichern abfragen
      Exit = 1
    EndIf
    If EventGadget() = 102 ; Auf Abbrechen abfragen
      Exit = 1
    EndIf  
    If EventGadget() = 103 ; Einstellungen übernehmen
      [...]
    EndIf 
    
  EndIf 
  
Until Exit = 1
Idealerweise das ganze noch in einer Select-Abfrage (anstelle der If -EndIf
- Orgie) und mit aussagekräftigen Konstantennamen (anstelle der
nichtssagenden Nummern) ;-)

Grüße ... Kiffi
a²+b²=mc²
Antworten