Seite 1 von 1
Datei übergreifend declarieren
Verfasst: 27.12.2016 08:05
von Baba_Smurf
Hallo,
wenn ein Programm mehrere Dateien haben soll und mehrere Fenster, wie werden dann Konstanten und Co. deklariert??
Mache ich das alles im Hauptprogramm als Global ??
oder bekommt jede Datei, in der sich auch andere Fenster befinden eine seperate Ereignisbehandlung??
Hoffe man versteht was ich meine.
mfg
Re: Datei übergreifend declarieren
Verfasst: 27.12.2016 11:14
von NicTheQuick
Wenn du BindEvent und Konsorten nutzt, kannst du jedem Fenster eine eigene Datei inklusive eigener Ereignisbehandlung zuordnen. Nutzt du das alte WindowEvent()-Konstrukt, brauchst du eine globale Eventschleife für alle Fenster.
Und wegen der Konstanten: Wenn du Enumerations nutzt, dann kannst du diese benennen und auf mehrere Stellen aufteilen.
Code: Alles auswählen
Enumeration Fenster
#id1
#id2
EndEnumeration
;irgendwas anderes
Enumeration Fenster
#id3
#id4
EndEnumeration
Debug #id1
Debug #id2
Debug #id3
Debug #id4
Re: Datei übergreifend declarieren
Verfasst: 27.12.2016 12:38
von Baba_Smurf
Ok
Vielen Dank. Was ist denn die bessere Version bzw. Wie würdest du es machen?
Mfg
Re: Datei übergreifend declarieren
Verfasst: 27.12.2016 13:53
von NicTheQuick
Ich nutze am liebsten gar keine Enumerations, sondern pro Fenster eine Struktur mit einem Eintrag pro Gadget im Fenster. Jedes Gadget wird dann mit #PB_Any erstellt. Jedes Fenster hat dann eine Init-Funktion, in der auch für jedes Gadget, bei dem es notwendig ist, BindGadgetEvent aufgerufen wird und eben noch BindEvent für das Fenster selbst. Im Zusammenspiel mit einem Interface und Modulen kann man dann jedes Fenster schön kapseln.
Siehe auch mein Video zum Canvas-Gadget:
[PB] HowTo: CanvasWindow (Teil 1/2)
Re: Datei übergreifend declarieren
Verfasst: 27.12.2016 14:55
von mk-soft
Achtung Werbung
Ich lasse mir alle Konstanten und Event-Proceduren für beliebige Fenster automatisch erstellen.
Dazu habe ich mir ein Tool geschrieben (siehe Signatur EventDesigner). Eine nachträgliche Änderung oder hinzufügen von Fenstern ist auch möglich...

Re: Datei übergreifend declarieren
Verfasst: 27.12.2016 15:26
von ts-soft
Dann will ich auch mal
Ich declariere meine Enumerationen in einem Module (und zwar leer

) und nutze diese dann als Named-Enumeration überall.
Das Module sollte natürlich vor allen anderen eingefügt werden.
Code: Alles auswählen
CompilerIf Defined(CommonConstants, #PB_Module) = 0
DeclareModule CommonConstants
; Form
Enumeration FormWindow
EndEnumeration
Enumeration FormGadget
EndEnumeration
Enumeration FormMenu
EndEnumeration
Enumeration FormImage
EndEnumeration
Enumeration FormFont
EndEnumeration
; Event
Enumeration EventCustom #PB_Event_FirstCustomValue
EndEnumeration
Enumeration EventTypeCustom #PB_EventType_FirstCustomValue
EndEnumeration
EndDeclareModule
Module CommonConstants
EndModule
CompilerEndIf
Jetzt brauch ich nur noch UseModule CommonConstants einfügen, auf den Namen der Enumeration achten und alles paßt,
auch die EventType für benutzerdefinierte Events.
Re: Datei übergreifend declarieren
Verfasst: 27.12.2016 16:54
von H.Brill
Ich würde mal einfach sagen : Wenn man sich mit OpenWindow()
beim Erstellen eine Fensternummer geben läßt, kann man das
jeweilige Fenster in einer einzigen Ereignisschleife mit GetActiveWindow()
ermitteln, mit der Fensternummer vergleichen und entsprechend darauf
reagieren.
Es kann ja immer nur EIN Fenster aktiv sein.
Re: Datei übergreifend declarieren
Verfasst: 28.12.2016 17:34
von Imhotheb
H.Brill hat geschrieben:
Es kann ja immer nur EIN Fenster aktiv sein.
VORSICHT: Es können aber trotzdem Ereignisse für jedes Fenster eintreffen, nicht nir für das aktive.