Wie programmiert ihr eigentlich eure Fensterapplikationen?
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Bei modalen Dialogen würde ich sie dann über eine Prozedur während der Laufzeit erstellen. Bei nichtmodalen Unterfenstern der Anwendung eben nicht während der Laufzeit, sondern am Start versteckt öffnen(NICHT HideWindow benutzen sondern das #PB_Window_Invisible Flag! Dann sieht man es bei langsamen Computern auch erst garnicht beim Start).
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
ICh erstelle immer erst ein fenster fertig, die gadgets mit Hand un kofrechnenpositionieren, Die konstanten Werden bei mir fensterübergreifend durchnummerirt,
ich habe 1 hauptschleife mit select für alle fenster,
Wenn ich mehrere fenster habe mache ich die entweder mit #PB_Any und einer LL() oder mit konstantendie vorher definirt wurden.
Die Fenster erstelle ich immer erst dann wenn sie gebraucht werden ( ICh weiß zu beginn des Proggens meist garnicht wiefiele fesnter ich brauche, und da schreibe ich sie halt rein wenn sie sichtbar werden sollen,)
Früher hab ich NIE Prozeduren verwendet, heute mache ich das manchmal, aber für Fenster eigentlich nicht.
ich habe 1 hauptschleife mit select für alle fenster,
Wenn ich mehrere fenster habe mache ich die entweder mit #PB_Any und einer LL() oder mit konstantendie vorher definirt wurden.
Die Fenster erstelle ich immer erst dann wenn sie gebraucht werden ( ICh weiß zu beginn des Proggens meist garnicht wiefiele fesnter ich brauche, und da schreibe ich sie halt rein wenn sie sichtbar werden sollen,)
Früher hab ich NIE Prozeduren verwendet, heute mache ich das manchmal, aber für Fenster eigentlich nicht.
- Programie
- Beiträge: 1280
- Registriert: 06.08.2005 22:56
- Computerausstattung: https://www.sysprofile.de/id160800
- Wohnort: Gernsbach
- Kontaktdaten:
Ich mach es so (Ohne Komentare):
Code: Alles auswählen
Enumeration
#Window
#Menu; Wenn ein Menu verwendet wird
#ToolBar; Wenn eine ToolBar verwendet wird
; Menukonstanten
; Gadgetkontanten
#StatusBar; Wenn eine Statusleiste verwendet wird
EndEnumeration
Structure Config; Einstellungen speichere ich in einer Structure (Wenn nötig)
MainPath.s; Programmverzeichnis
PrefsFile.s; Einstellungsdatei (z.B. Settings.ini)
Parameter.s; Wenn ich einen Parameter für das Programm benötige
; Sonstige Einstellungsvaluen
EndStructure
Global Config.Config; Die Einstellungsstructure mach ich IMMER Global
; Proceduren
Config\MainPath=GetPathPart(ProgramFilename()); Programmverzeichnis
Config\PrefsFile=Config\MainPath+"Settings.ini"; Einstellungsdatei
; Sonstige "Festwerte"
; Hier die Einstellungen mit OpenPreferences(Config\PrefsFile) oder ReadFile() in die Config-Structure laden (1. Möglichkeit)
If OpenWindow(#Window,100,100,500,300,"Fenstertitel",#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered); Ist irgendwie eine Angewohnheit mit der Größe 100x100x500x300 :-)
If CreateMenu(#Menu,WindowID(#Window))
; Menu-Items
EndIf
If CreateToolBar(#ToolBar,WindowID(#Window))
; ToolBar Einträge
EndIf
If CreateGadgetList(WindowID(#Window))
; Gadgets
EndIf
If CreateStatusBar(#StatusBar,WindowID(#Window))
; StatusBar "Flächen"
EndIf
; Einstellungen Laden (2. Möglichkeit)
; Sonstige Funktionen (z.B. SmartWindowRefresh() oder StickyWindow())
Repeat
Select WaitWindowEvent()
Case #PB_Event_Menu
Select EventMenu()
; MenuItems
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
; Gadgets
EndSelect
Case #PB_Event_SizeWindow
Select EventWindow()
Case #Window
; Gadgets, ... im #Window resizen
; Sonstige Fenster
EndSelect
Case #PB_Event_CloseWindow
; Mehrere Fenster:
; Select EventWindow()
; Case #Window
; Quit=#True
; ; Sonstige Fenster
; EndSelect
; Wenn nur ein Fenster da ist:
Quit=#True
EndSelect
Until Quit=#True
; Einstellungen mit CreatePreferences(Config\PrefsFile) oder CreateFile() speichern (auslesen aus Config-Structure)
EndIf