MultiWindow

Fragen und Bugreports zur PureBasic 4.0-Beta.
Martin66119
Beiträge: 282
Registriert: 03.01.2005 11:36

MultiWindow

Beitrag von Martin66119 »

Kann mir bitte jemand helfen.

Wenn ich auf den Button_1 drücke soll eine Messagebox aufgehen und bei Button_ 2 ein neues Fenster. Unter PB3.94 hat das funktioniert. Nach umschreiben auf PB4.0 gklappt es irgendwie nicht. Aber warum? Ich finde den Fehler nicht.

Hier der Code.


Code: Alles auswählen

;- Window Constants

Enumeration
#Window_0
#Window_1
#Window_2
#Window_3

#Button_0
#Button_1

#CheckBox_0
#CheckBox_1
  
EndEnumeration
;--------------------------------------------------------------------------------------------------------------------------------------

;-------------------------------------------------------------------------------------------------------------------------------------
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 0, 0, 270, 130, "CheckBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
 WindowID = WindowID(#Window_0) 

    If CreateGadgetList(WindowID)   ; die Gadgetliste wurde erfolgreich erstellt
      ButtonGadget(0, 10, 10, 200, 20, "Button_0", #PB_Button_Right)
      ButtonGadget(1, 10, 40, 200, 20, "Button_1")
      ButtonGadget(2, 10, 70, 200, 20, "Button_2") 
    Else                               ; die Gadgetliste konnte nicht erstellt werden
      ; Zeigen Sie hier eine Fehlermeldung an, beenden Sie das Programm etc...
    EndIf  



  EndIf

EndProcedure
;-----------------------------------------------------------------------------------------------------------------------

Procedure Open_Window_1()
  If OpenWindow(Window_1, 100, 200, 195, 260, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
    If CreateGadgetList(WindowID)
 
      
    EndIf
  EndIf
EndProcedure

Procedure Open_Window_3()
  If OpenWindow(Window_3, 100, 200, 195, 260, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
    If CreateGadgetList(WindowID)
  
      
    EndIf
  EndIf
EndProcedure

DataSection
GrundWerte:;0     1         2       3       4        5        6      7         8      9       
Data.s "10:00","19:00", "12:00","13:00", "16:00","18:30", "19:30","20:30", "10:30","22:30"
  
EndDataSection

;--------------------------------------------
IncludeFile "LeerMultiWindowCommon.pb"
;------------------------------------------Definition erforderlicher Felder-------------------------------------------------------------
Open_Window_0()
;--------------------------Event Schleife-------------------------------------------------------------Repeat ; Start of the event loop
Repeat
 
  EventID=WindowEvent() ; This line waits until an event is received from Windows
  WinID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  GadgetID= EventGadget()
  
  Select EventID
    Case #PB_Event_CloseWindow
      Select WinID
;---------------------------------Verwaltung der vorhandenen Windows-------------------------------------------------------------------
        Case #Window_0
          CloseWindow(#Window_0)
        End
          
        Case #Window_1         
          CloseWindow(#Window_1)
          Open_Window_0()

        Case #Window_2
          CloseWindow(#Window_2)
          
        Case #Window_3
          CloseWindow(#Window_3)

      EndSelect
 ;---------------------------------Abfrage vorhandener Button und Checkboxen-----------------------------------------------------------------------    
      Case #PB_Event_Gadget
        Select GadgetID
          Case #Button_0 
          MessageRequester("Test","Button_1 wurde gedrückt",0)   
          Case #Button_1 
          MessageRequester("Test","Button_2 wurde gedrückt",0)
          Open_Window_1()              
          Case #CheckBox_0
         
            If GetGadgetState(#CheckBox_0) = 1
             MessageRequester("ttt","tt",0)
;              ;a = Relaisstellung()
;              CallFunctionFast(AdrPortOut, PortNum,a) ; write 80h to port 378h  
            Else
;              ;a = Relaisstellung()
;              CallFunctionFast(AdrPortOut, PortNum,a)
            EndIf
          Case #CheckBox_1
          If GetGadgetState(#CheckBox_1) = 1
;            ;a = Relaisstellung()
;            CallFunctionFast(AdrPortOut, PortNum,a) ; write 80h to port 378h  
          Else
;            ;a = Relaisstellung()
;            CallFunctionFast(AdrPortOut, PortNum,a)
          EndIf      
        EndSelect
  EndSelect 
;---------------------------------------------Aufruf der Funktionen Messen und Schalten------------------------------------------------  
 Delay(1)
 Until WaitWindowEvent() = #PB_Event_CloseWindow
;---------------------------------------------Datenbereich für die Initialisierung------------------------------------------------------

Danke für die Hilfe!!!
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: MultiWindow

Beitrag von Kiffi »

> Ich finde den Fehler nicht.

hier mal die 3 schlimmsten Fehler:

1.: Wenn Du schon Konstanten definierst und diese abfragst, dann solltest
diese auch bei den ButtonGadgets verwenden ;-)

Code: Alles auswählen

ButtonGadget(#Button_0, 10, 10, 200, 20, "Button_0", #PB_Button_Right)
ButtonGadget(#Button_1, 10, 40, 200, 20, "Button_1")
ButtonGadget(#Button_2, 10, 70, 200, 20, "Button_2")
2.: Diese Zeile...

Code: Alles auswählen

EventID=WindowEvent() ; This line waits until an event is received from Windows
... ändern in ...

Code: Alles auswählen

EventID=WaitWindowEvent() ; This line waits until an event is received from Windows
3.: Diese Zeile...

Code: Alles auswählen

Until WaitWindowEvent() = #PB_Event_CloseWindow
... ändern in ...

Code: Alles auswählen

Until EventID = #PB_Event_CloseWindow
Grüße ... Kiffi
a²+b²=mc²
Martin66119
Beiträge: 282
Registriert: 03.01.2005 11:36

Multiwindow

Beitrag von Martin66119 »

Danke für die Hilfe. Etwas schlecht geschaut habe ich da wohl!
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Multiwindow

Beitrag von Kiffi »

> Danke für die Hilfe.

freut mich, wenn's geholfen hat. :-)

Nchtsdestotrotz hier noch der Hinweis, dass sich noch mehr als die von mir
genannten Fehler in Deinem Code befinden. Aber die findest Du sicherlich
noch ;-)

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