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... :wink:

Re: Datei übergreifend declarieren

Verfasst: 27.12.2016 15:26
von ts-soft
Dann will ich auch mal :D
Ich declariere meine Enumerationen in einem Module (und zwar leer :wink: ) 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.