Datei übergreifend declarieren
-
- Beiträge: 55
- Registriert: 01.03.2015 12:05
- Wohnort: Saarland / Püttlingen
- Kontaktdaten:
Datei übergreifend declarieren
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
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
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Datei übergreifend declarieren
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.
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
-
- Beiträge: 55
- Registriert: 01.03.2015 12:05
- Wohnort: Saarland / Püttlingen
- Kontaktdaten:
Re: Datei übergreifend declarieren
Ok
Vielen Dank. Was ist denn die bessere Version bzw. Wie würdest du es machen?
Mfg
Vielen Dank. Was ist denn die bessere Version bzw. Wie würdest du es machen?
Mfg
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Datei übergreifend declarieren
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)
Siehe auch mein Video zum Canvas-Gadget: [PB] HowTo: CanvasWindow (Teil 1/2)
Re: Datei übergreifend declarieren
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...
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...

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Datei übergreifend declarieren
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.
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.

Ich declariere meine Enumerationen in einem Module (und zwar leer

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
auch die EventType für benutzerdefinierte Events.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Datei übergreifend declarieren
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.
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.
PB 6.10
- Imhotheb
- Beiträge: 192
- Registriert: 10.10.2014 13:14
- Computerausstattung: Intel 8086, 640 KB RAM, Hercules Video Adapter, 2 x 5 1/4" 360kb Floppy, MS-DOS 3
- Wohnort: Wolfenbüttel
Re: Datei übergreifend declarieren
VORSICHT: Es können aber trotzdem Ereignisse für jedes Fenster eintreffen, nicht nir für das aktive.H.Brill hat geschrieben: Es kann ja immer nur EIN Fenster aktiv sein.
weil einfach einfach einfach ist ... mach' ich es anders