Warum funktioniert dieser Code nicht?

Anfängerfragen zum Programmieren mit PureBasic.
Calloway
Beiträge: 106
Registriert: 15.09.2004 23:26

Warum funktioniert dieser Code nicht?

Beitrag von Calloway »

Warum funktioniert dieser Code nicht? Es werden nur die ersten drei Gadgets gezeichnet, dann kommt die Sanduhr und "keine Rückmeldung"

Code: Alles auswählen

Enumeration
  #Text_Ferien
  #Combo_Bundeslaender
  #ListIcon_Ferien
  #Text_Urlaub
  #ListIcon_Urlaub
  #Date_0
  #Date_1
  #Date_2
  #Date_3
  #Button_UrlaubHinzufuegen
  #Button_Urlaubloeschen
  #Button_FerienOK
  #Button_FerienAbbruch
  
EndEnumeration 

WinID1=OpenWindow(1, 272, 221, 629, 369,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Ferien- und Urlaubstermine")
If WinID1
  If CreateGadgetList(WinID1)
    TextGadget(#Text_Ferien, 20, 10, 110, 20, "Ferien:")
    ComboBoxGadget(#Combo_Bundeslaender, 20, 30, 280, 20)
    ListIconGadget(#ListIcon_Ferien, 20, 60, 280, 230, "Column1", 100, #PB_ListIcon_CheckBoxes)
    TextGadget(#Text_Urlaub, 310, 10, 60, 20, "Urlaub:")
    ListIconGadget(#ListIcon_Urlaub, 310, 60, 200, 230, "Column1", 100)
    ButtonGadget(#Date_0, 140, 300, 80, 20, "")
    ButtonGadget(#Date_1, 220, 300, 80, 20, "")
    ButtonGadget(#Date_2, 350, 300, 80, 20, "")
    ButtonGadget(#Date_3, 430, 300, 80, 20, "")
    ButtonGadget(#Button_UrlaubHinzufuegen, 520, 80, 90, 20, "Hinzufügen")
    ButtonGadget(#Button_Urlaubloeschen, 520, 100, 90, 20, "Löschen")
    ButtonGadget(#Button_FerienOK, 20, 340, 80, 20, "OK")
    ButtonGadget(#Button_FerienAbbruch, 530, 340, 80, 20, "Abbruch")
  Else:MessageRequester("Fehlermeldung", "GUI-Fehler! (Gadgets)", #MB_OK|#MB_ICONWARNING)  
  EndIf
Else:MessageRequester("Fehlermeldung", "GUI-Fehler! (Window)", #MB_OK|#MB_ICONWARNING)  
EndIf

rausferien.b=0
EventID.l = WaitWindowEvent()
Repeat
  Select EventID
    Case #PB_EventGadget
      Select EventGadgetID()
        Case #Text_Ferien
        Case #Combo_Bundeslaender
        Case #ListIcon_Ferien
        Case #Text_Urlaub
        Case #ListIcon_Urlaub
        Case #Date_0
        Case #Date_1
        Case #Date_2
        Case #Date_3
        Case #Button_UrlaubHinzufuegen
        Case #Button_Urlaubloeschen
        Case #Button_FerienOK:rausferien=2
        Case #Button_FerienAbbruch:rausferien=1  
      EndSelect
    Case #PB_EventCloseWindow:rausferien=1
  EndSelect 
Until rausferien
CloseWindow(1)
Benutzeravatar
iF
Beiträge: 84
Registriert: 17.07.2005 20:20
Wohnort: Berlin
Kontaktdaten:

Beitrag von iF »

Ich glaube wenn Du diese beiden Zeilen vertauscht:

Code: Alles auswählen

EventID.l = WaitWindowEvent() 
Repeat 
dann funktionierts.

Salve.
Achtung: kein PB'ler - habt bitte erbarmen. :mrgreen: /:->
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

zeile 40 und zeile 41 vertauschen dann geht es. du musst jedes mal in der repeatschleife ein windowevent haben aber du hast nur einmal eins und das vor der repeatschleife :allright:

Code: Alles auswählen

Enumeration
  #Text_Ferien
  #Combo_Bundeslaender
  #ListIcon_Ferien
  #Text_Urlaub
  #ListIcon_Urlaub
  #Date_0
  #Date_1
  #Date_2
  #Date_3
  #Button_UrlaubHinzufuegen
  #Button_Urlaubloeschen
  #Button_FerienOK
  #Button_FerienAbbruch
 
EndEnumeration

WinID1=OpenWindow(1, 272, 221, 629, 369,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Ferien- und Urlaubstermine")
If WinID1
  If CreateGadgetList(WinID1)
    TextGadget(#Text_Ferien, 20, 10, 110, 20, "Ferien:")
    ComboBoxGadget(#Combo_Bundeslaender, 20, 30, 280, 20)
    ListIconGadget(#ListIcon_Ferien, 20, 60, 280, 230, "Column1", 100, #PB_ListIcon_CheckBoxes)
    TextGadget(#Text_Urlaub, 310, 10, 60, 20, "Urlaub:")
    ListIconGadget(#ListIcon_Urlaub, 310, 60, 200, 230, "Column1", 100)
    ButtonGadget(#Date_0, 140, 300, 80, 20, "")
    ButtonGadget(#Date_1, 220, 300, 80, 20, "")
    ButtonGadget(#Date_2, 350, 300, 80, 20, "")
    ButtonGadget(#Date_3, 430, 300, 80, 20, "")
    ButtonGadget(#Button_UrlaubHinzufuegen, 520, 80, 90, 20, "Hinzufügen")
    ButtonGadget(#Button_Urlaubloeschen, 520, 100, 90, 20, "Löschen")
    ButtonGadget(#Button_FerienOK, 20, 340, 80, 20, "OK")
    ButtonGadget(#Button_FerienAbbruch, 530, 340, 80, 20, "Abbruch")
  Else:MessageRequester("Fehlermeldung", "GUI-Fehler! (Gadgets)", #MB_OK|#MB_ICONWARNING) 
  EndIf
Else:MessageRequester("Fehlermeldung", "GUI-Fehler! (Window)", #MB_OK|#MB_ICONWARNING) 
EndIf

rausferien.b=0
Repeat
  EventID.l = WaitWindowEvent()
  Select EventID
    Case #PB_EventGadget
      Select EventGadgetID()
        Case #Text_Ferien
        Case #Combo_Bundeslaender
        Case #ListIcon_Ferien
        Case #Text_Urlaub
        Case #ListIcon_Urlaub
        Case #Date_0
        Case #Date_1
        Case #Date_2
        Case #Date_3
        Case #Button_UrlaubHinzufuegen
        Case #Button_Urlaubloeschen
        Case #Button_FerienOK:rausferien=2
        Case #Button_FerienAbbruch:rausferien=1 
      EndSelect
    Case #PB_EventCloseWindow:rausferien=1
  EndSelect
Until rausferien
CloseWindow(1)
[Edit]iF war schneller...
BTW: iF ich bin stolz auf ich :lol: , das hätte nicht jeder nicht PB'ler gewusst :lol: [/Edit]
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
iF
Beiträge: 84
Registriert: 17.07.2005 20:20
Wohnort: Berlin
Kontaktdaten:

Beitrag von iF »

[Edit]iF war schneller...
BTW: iF ich bin stolz auf ich , das hätte nicht jeder nicht PB'ler gewusst [/Edit]
Es zuckte so komisch in meinem rechten Proggerauge das die ID ungefüttert bleiben soll. :mrgreen:

Salve!
Achtung: kein PB'ler - habt bitte erbarmen. :mrgreen: /:->
Calloway
Beiträge: 106
Registriert: 15.09.2004 23:26

Beitrag von Calloway »

Da hatte ich wohl ein Mörderbrett vor den Augen. Stimmt, ist ja auch logisch. Die Eventabfrage muss ja in die Schleife. Jetzt habe ich derartiges schon 100 mal geproggt, aber diesmal habe ich das einfach nicht bemerkt.

Vielen Dank euch allen für die schnelle Hilfe. :allright:
Antworten