Hallo,
auch wenn das Thema vielleicht viele ermüdet, finde ich keine schlanke Lösung und "riskier" mal zu fragen.
Ich möchte als simples Beispiel per BindEvent & Co ein für sich gekapseltes Fenster öffnen (Eine Art "About-Splashwindow"),
das sich nach Zeit (z.B. 10sek.), Window-Klick oder Button-Klick schliesst. Wollte das in ein Include-File auslagern und ggf. wiederverwenden.
Die folgenden Diskussionen (und ein wenig im englischen Forum) habe ich bereits gelesen:
https://www.purebasic.fr/german/viewtop ... =bindevent
https://www.purebasic.fr/german/viewtop ... nt#p355537
Mein Kernproblem ist also wohl, wie ich elegant (und Hauptprogramm-unabhängig) Events im AboutWindow verarbeiten kann.
Hier das lauffähige Einstiegsgerippe, vielleicht hat ja jemand Lust das passend zu ergänzen/ändern,
natürlich würde auch ein Link zu einer ähnlichen Losung völlig reichen.
Code: Alles auswählen
Enumeration
#MainWindow
#AboutWindow
EndEnumeration
Enumeration
#Button_About
#Button_Send
#Button_Ok
EndEnumeration
; ----------------------------------------------------------------------------------------
Procedure DoAbout()
If (OpenWindow(#AboutWindow, 233, 81, 410, 234, ".....", #PB_Window_BorderLess | #PB_Window_ScreenCentered ) )
ButtonGadget(#Button_Ok, 190, 200, 50, 25, "OK")
SetWindowColor(#AboutWindow, RGB(50,100,220)) : StickyWindow(#AboutWindow, 1)
;
; Die Anzeige des #AboutWindow nach 10sek, klick ins Fenster (blauer Bereich) oder OK-Buttton beenden
;
;CloseWindow(#AboutWindow)
EndIf
EndProcedure
; ----------------------------------------------------------------------------------------
OpenWindow(#MainWindow, 0, 0, 600, 400, "Programm-Hauptfenster", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
ButtonGadget(#Button_Send, 350, 370, 80, 25, "Send")
ButtonGadget(#Button_About, 550, 370, 40, 25, "?")
BindGadgetEvent(#Button_About, @DoAbout())
Repeat ; Hauptschleife "klassisch"
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #Button_Send : Debug "Send angeklickt!"
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow