
Tobe, eine Frage noch:
Wie hast Du den Fehler gefunden? Für die Zukunft ist das sicher hilfreich...
An Tomas:
Das mit der Dynamik sollte ich mir dann mal zu Gemüte führen

Also nochmals Danke!
Gruß,
Christoph
Code: Alles auswählen
; Beispiel Umgang mit mehreren Fenstern (Kaskadierung)
; PAMKKKKK 21.September.2005
; PB 3.94.
; getestet und angepasst an PB 4.10 Mac by michel51
;- Window Constants
Enumeration
#Window_0
#Window_1
#Window_2
EndEnumeration
;- Gadget Constants
Enumeration
#Text_0_1
#Text_1_1
#Text_2_1
#Button_0_1
#Button_1_1
#Button_1_2
#Button_2_1
EndEnumeration
; Die Fenster verpackt man, in Proceduren
; damit man Sie bei bedarf aufrufen kann
Procedure Open_Window_0() ; Hauptfenster
If OpenWindow(#Window_0, 200, 200, 200, 100, "Fenster 0", #PB_Window_SystemMenu | #PB_Window_TitleBar ) = 0
MessageRequester("Fehler!","Fehler beim Oeffenen von Fenster 0")
ProcedureReturn 0 ; bei Fehler raus aus der Procedure
EndIf
If CreateGadgetList(WindowID(#Window_0)) = 0
MessageRequester("Fehler!", "Gadget Liste Fenster 0 konte nicht erstellt werden!")
ProcedureReturn 0 ; bei Fehler raus aus der Procedure
EndIf
TextGadget(#Text_0_1, 10, 10, 180, 20, "Klicken fuer Fenster 1",#PB_Text_Center )
ButtonGadget(#Button_0_1, 65, 60, 100, 30, "Aufmachen")
ProcedureReturn 1 ; alles OK
EndProcedure
Procedure Open_Window_1()
If OpenWindow(#Window_1, 220, 220, 200, 100, "Fenster 1", #PB_Window_SystemMenu | #PB_Window_TitleBar ) = 0
MessageRequester("Fehler!", "Fehler beim Oeffenen von Fenster 1")
ProcedureReturn 0 ; bei Fehler raus aus der Procedure
EndIf
If CreateGadgetList(WindowID(#Window_1)) = 0
MessageRequester("Fehler!", "Gadget Liste Fenster 1 konte nicht erstellt werden!")
ProcedureReturn 0 ; bei Fehler raus aus der Procedure
EndIf
TextGadget(#Text_1_1, 10, 10, 180, 20, "Willst du noch ein Fenster ?",#PB_Text_Center )
ButtonGadget(#Button_1_1, 15, 60, 80, 30, "Abbruch")
ButtonGadget(#Button_1_2, 115, 60, 80, 30, "Weiter")
ProcedureReturn 1 ; alles OK
EndProcedure
Procedure Open_Window_2()
If OpenWindow(#Window_2, 240, 240, 200, 100, "Fenster 2", #PB_Window_SystemMenu | #PB_Window_TitleBar ) = 0
MessageRequester("Fehler!", "Fehler beim oeffenen von Fenster 2")
ProcedureReturn 0 ; bei Fehler raus aus der Procedure
EndIf
If CreateGadgetList(WindowID(#Window_2)) = 0
MessageRequester("Fehler!", "Gadget Liste Fenster 2 konte nicht erstellt werden!")
ProcedureReturn 0 ; bei Fehler raus aus der Procedure
EndIf
TextGadget(#Text_2_1, 10, 10, 180, 20, "Nun ist aber gut!",#PB_Text_Center )
ButtonGadget(#Button_2_1, 65, 60, 70, 30, "Zurueck")
ProcedureReturn 1 ; alles OK
EndProcedure
; nun folgen die Proceduren die zur Steuerung des Fensterwechsel nötig sind
Procedure Change_to_Window_1() ; Fenster 1 öffnen und wechseln
; Fenster 0 deaktivieren (nicht schliessen)
DisableWindow(#Window_0,1)
;Fenster 0 sendet nun keine ereignisse mehr (ragiert nicht mehr)
Open_Window_1() ; Fenster 1 Öffnen
EndProcedure
Procedure Close_Window_1() ; Fenster 1 schliessen
CloseWindow(#Window_1) ; Fenster 1 schliessen
DisableWindow(#Window_0, 0) ; Fenster 0 wieder Aktivieren (Windows API)
;UseWindow(#Window_0) ; Fenster 0 benutzen
SetActiveWindow(#Window_0) ; Fenster 0 nach vorne holen falls es Hinter anderen Fenstern war
EndProcedure
Procedure Change_to_Window_2() ; Fenster 2 öffnen und wechseln
; Fenster 1 deaktivieren (nicht schliessen)
DisableWindow(#Window_1, 1)
;Fenster 1 sendet nun keine ereignisse mehr (ragiert nicht mehr)
Open_Window_2() ; Fenster 2 Öffnen
EndProcedure
Procedure Close_Window_2() ; Fenster 2 schliessen
CloseWindow(#Window_2) ; Fenster 2 schliessen
DisableWindow(#Window_1, 0) ; Fenster 1 wieder Aktivieren
;UseWindow(#Window_1) ; Fenster 1 benutzen
SetActiveWindow(#Window_1) ; Fenster 1 nach vorne holen falls es Hinter anderen Fenstern war
EndProcedure
;***********************************************
;- Programm start
;***********************************************
Open_Window_0() ; Hauptfenster öffnen
;***********************************************
;- Fenster Behandlung
;***********************************************
Repeat
EventID = WaitWindowEvent() ; Welches Ereignisse trat auf
WinID = EventWindow() ; Welches der Fenster (Nummer) sendet das ereignis?
Select EventID ; Start der Ereignis Behandlung (Fenster und Gadget)
; Fenster Behandlung:
Case #PB_Event_CloseWindow ; Wenn das Ereignis "Fenster schliessen" ist
Select WinID ; Welches hat Fenster schliessen gesendet?
Case #Window_0 ; Es war Fenster 0 (es kann nur geschlossen werden wenn es Aktiv ist)
End ; Wenn Fenster 0 zu schliessen ist dann PROGRAMM ENDE.
Case #Window_1 ; Es war Fenster 1
Close_Window_1() ; Fenster 1 zumachen und zu Fenster 0 wechseln
Case #Window_2 ; Es war Fenster 2
Close_Window_2() ; Fenster 2 zumachen und zu Fenster 1 wechseln
EndSelect ; Ende der Fenster Behandlung
; Gadget Behandlung:
Case #PB_Event_Gadget ; Wenn das Ereignisvon einem Gadget kam
GadgetID = EventGadget() ; Gadgetnummer rausbekommen das gesendet hat
Select GadgetID ; Nach Gadgetnummer reagieren
Case #Button_0_1 ; Es war Knopf 0_1
Change_to_Window_1() ; Fenster 0 deaktiviern und zu Fenster 1 wechseln
Case #Button_1_1 ; Es war Knopf 1_1
Close_Window_1() ; Fenster 1 schliessen zurück zu Fenster 0
Case #Button_1_2 ; Es war Knopf 1_2
Change_to_Window_2() ; Fenster 1 deaktiviern und zu Fenster 2 wechseln
Case #Button_2_1 ; Es war Knopf 2-1
Close_Window_2() ; Fenster 2 schliessen zurück zu Fenster 1
EndSelect ; Ende der Gadget Behandlung
EndSelect ; Ende der Ereignis Behandlung
ForEver ; Endet nur wenn Fenster 0 geschlossen wird.
End
Dein Generator ist sehr schön, aber wenn Einsteiger erstmal total aufmk-soft hat geschrieben:Wer automatische Eventhandling benötig siehe Signatur
Code: Alles auswählen
; Simple common file
; Enumeration not used
; Safe as common.pb and run Visual Generate to create code
Procedure Open_MainWin() ; "Open_" is as primary key for open_window_xyz
If OpenWindow(#MainWin, 0,0,600,400, "Main Window")
If CreateImageMenu(#MenuBar, WindowID(#MainWin), #PB_Menu_ModernLook)
MenuTitle("&File")
MenuItem(#Menu_Exit, "E&xit\tAlt-F4")
EndIf
If CreatePopupImageMenu(#MenuSub, #PB_Menu_ModernLook)
MenuItem(#MenuSub_OpenFile, "Öffnen")
MenuItem(#MenuSub_CloseFile, "Schliessen")
OpenSubMenu("Öffnen mit...")
MenuItem(#MenuSub_OpenWithPB, "PureBasic")
MenuItem(#MenuSub_OpenWithPB_Beta, "PureBasic beta",LoadImage(0, "D:\Winapp\PureBasic420beta\Examples\Sources\Data\CDPlayer.ico"))
CloseSubMenu()
MenuItem(#MenuSub_SaveFile, "Speichern")
MenuItem(#MenuSub_Exit, "Exit")
EndIf
If CreateStatusBar(#StatusBar, WindowID(#MainWin))
EndIf
If CreateGadgetList(WindowID(#MainWin))
ButtonGadget(#Button, 10,10,120,25, "SubMenu")
EndIf
EndIf
EndProcedure
Einsteiger sollten erstmal garkeine Hilfsmittel nutzen, ausser der Hilfe, div.mk-soft hat geschrieben:Visual Designer ist nicht unbedingt erforderlich. kommt auch mit Hand geschiebene Common.pb klar.
der error war bei mir in der zeile 84Wie hast Du den Fehler gefunden? Für die Zukunft ist das sicher hilfreich...
Code: Alles auswählen
projekt_pfad$=arbeitspfad$+GetGadgetText(#Titel)+"_"+GetGadgetText(#komponist)+"_"+GetGadgetText(#arrangeur)