
#PB_Any probleme
die Übersicht im eigenen Code zu behalten ist nicht verkehrt. WennMagix-Soft <Kain> hat geschrieben:das mache ich eigentlich wegen der übersicht...
dadurch aber die Programmstabilität gefährdet wird, ist es definitiv der
falsche Weg.
für diesen Zweck benennt man die Konstanten so, dass man auch nochMagix-Soft <Kain> hat geschrieben:weil das bringt mir ja nichts wenn ich über 100 konstanden habe und ich nicht mehr weis welche für was ist -.-
nach Monaten weiß, wofür sie stehen.
Code: Alles auswählen
#frmOptions_cmdOK ; OK-Button im Optionen-Fenster
#frmOptions_cmdCancel ; Abbrechen-Button im Optionen-Fenster
legst und steige deshalb hier aus. Schließlich kann ich Dich nicht zu
Deinem Glück zwingen.
Grüße ... Kiffi
a²+b²=mc²
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
Hab dir jetzt mal was zusammengeschustert, das ist mit Sicherheit nicht die
einzige und/oder beste Lösung, aber es ist eine!
einzige und/oder beste Lösung, aber es ist eine!
Code: Alles auswählen
;Alle Konstanten
#Window1 = 0
#Window2 = 1
#Window3 = 2
#Window1_Btn_Close = 0
#Window1_Btn_Window2 = 1
#Window1_Btn_Window3 = 2
#Window2_Btn_Close = 3
#Window3_Btn_Close = 4
;Hauptfenster erstellen
OpenWindow(#Window1, 0, 0, 150, 100, "Window 1", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(#Window1))
ButtonGadget(#Window1_Btn_Close, 10, 10, 100, 20, "Close")
ButtonGadget(#Window1_Btn_Window2, 10, 35, 100, 20, "Open Window 2")
ButtonGadget(#Window1_Btn_Window3, 10, 60, 100, 20, "Open Window 3")
;Events des 1. Fensters
Procedure Window1Events(Event)
Select Event
Case #PB_Event_CloseWindow
ProcedureReturn -1 ;Damit realisiere ich das Verlassen der Eventschleife
Case #PB_Event_Gadget
Select EventGadget()
Case #Window1_Btn_Close
ProcedureReturn -1
Case #Window1_Btn_Window2
OpenWindow(#Window2, 0, 0, 150, 35, "Window 2", #PB_Window_SystemMenu|#PB_Window_WindowCentered, Window1)
CreateGadgetList(WindowID(#Window2))
ButtonGadget(#Window2_Btn_Close, 10, 10, 100, 20, "Close")
Case #Window1_Btn_Window3
OpenWindow(#Window3, 0, 0, 150, 35, "Window 3", #PB_Window_SystemMenu|#PB_Window_WindowCentered, Window1)
CreateGadgetList(WindowID(#Window3))
ButtonGadget(#Window3_Btn_Close, 10, 10, 100, 20, "Close")
EndSelect
EndSelect
EndProcedure
;Events des 2. Fensters
Procedure Window2Events(Event)
Select Event
Case #PB_Event_CloseWindow
CloseWindow(#Window2)
Case #PB_Event_Gadget
Select EventGadget()
Case #Window2_Btn_Close
CloseWindow(#Window2)
EndSelect
EndSelect
EndProcedure
;Events des 3. Fensters
Procedure Window3Events(Event)
Select Event
Case #PB_Event_CloseWindow
CloseWindow(#Window3)
Case #PB_Event_Gadget
Select EventGadget()
Case #Window3_Btn_Close
CloseWindow(#Window3)
EndSelect
EndSelect
EndProcedure
;Eine Schleife für alle Fenster!
Repeat
Event = WaitWindowEvent()
Select EventWindow()
Case #Window1
If Window1Events(Event) = -1 : Break : EndIf
Case #Window2
Window2Events(Event)
Case #Window3
Window3Events(Event)
EndSelect
ForEver
End
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
@milan1612
die lösung ist nicht schlecht ^^ nur eins stört mich daran (diese lösung war auch mein erster gedanke) und zwar wenn jetzt ein übergeortnetes fenster auf ist ist es un raatsam ein vorheriges fenster bedienen zu können... da es sonst zu problemen kommen kann...
zu den Macro's:
ich habe jetzt "Procedure" mit "Macro" aus getauscht und "ProcedureReturn" aus kommentiert...
Beispiel:
Procedure String_Editor(Typ$,WindowID)
zu
Macro String_Editor(Typ$,WindowID)
hier bekomme ich jetzt einen Syntax ERROR -.- aber warum? man kann doch auch mit parametern arbeiten.... (sthet jedenfals in der hilfe....)
die lösung ist nicht schlecht ^^ nur eins stört mich daran (diese lösung war auch mein erster gedanke) und zwar wenn jetzt ein übergeortnetes fenster auf ist ist es un raatsam ein vorheriges fenster bedienen zu können... da es sonst zu problemen kommen kann...
zu den Macro's:
ich habe jetzt "Procedure" mit "Macro" aus getauscht und "ProcedureReturn" aus kommentiert...
Beispiel:
Procedure String_Editor(Typ$,WindowID)
zu
Macro String_Editor(Typ$,WindowID)
hier bekomme ich jetzt einen Syntax ERROR -.- aber warum? man kann doch auch mit parametern arbeiten.... (sthet jedenfals in der hilfe....)

- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Das gute an der Einschleifenlösung ist ja gerade, dass alle Funktionen in den Fenstern weiterhin funktionieren. Wenn du das nicht willst, musst du eben beim Öffnen eines übergeordneten Fensters die untergeordneten deaktivieren mittels DisableWindow().Magix-Soft <Kain> hat geschrieben:und zwar wenn jetzt ein übergeortnetes fenster auf ist ist es un raatsam ein vorheriges fenster bedienen zu können... da es sonst zu problemen kommen kann...
Bei der Hülle, die du da an Fenstern erwartest, dürfte es aber eh ziemlich egal sein.
Weil ich glaube kaum, dass sich einer eine Applikation antut, bei der er nen Sack voll Fenster mühsam von oben nach unten schliessen muss.
Was die Macros betrifft, klar kannst du Parameter übergeben, aber keine ... hmm... wie soll ich das jetzt wieder erklären ?
Egal mach einfach das $ weg.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
ne kein .s, karkeine Typen
es werden einfach nur "Platzhalter" genutz, wo der Typ egal ist
Nor ein besseres Beispiel für die Macht von Macros:
es werden einfach nur "Platzhalter" genutz, wo der Typ egal ist
Code: Alles auswählen
Macro MeinDebug(Platzhalter)
Debug Platzhalter
EndMacro
MeinDebug("Laber")
MeinDebug(123)
MeinDebug(3.1415)
Code: Alles auswählen
Macro Frage(Platzhalter)
If (Platzhalter)
EndMacro
Macro Antwort(Platzhalter1, Platzhalter2)
Debug Platzhalter1
Else
Debug Platzhalter2
EndIf
EndMacro
Frage(1 = 1)
Antwort("Richtig", "Falsch")
Frage(1 = 2)
Antwort("Richtig", "Falsch")
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
ja xD habe es eben mitbekommen bevor ich moch mal hier rein bin hehe
und zwar hatte ich ja:
Macro Name(Typ, WindowID)
openwindow(#Constand,X,Y,X,Y,"Text"+Typ,WindowID(WindowID)
naja es sah dann im debugger komisch aus
#Constand(#Constang)
naja ich habe es jedenfals verstanden wie das Makro funktioniert
fielen dank auch für die erklärungen 
und zwar hatte ich ja:
Macro Name(Typ, WindowID)
openwindow(#Constand,X,Y,X,Y,"Text"+Typ,WindowID(WindowID)
naja es sah dann im debugger komisch aus
#Constand(#Constang)
naja ich habe es jedenfals verstanden wie das Makro funktioniert


