Und es gibt ja doch immer wieder die gleichen Dinge in einer Anwendung, die man irgendwie immer benötigt.
Code: Alles auswählen
;{- Aplication: HonigProgramm
;/ Autor: Folker Linstedt (xaby)
;- funct: Datenbank, WWS, Verwaltung, Adressen, Honig, Zuweisungen
;/ State: 2007|06|20
;/ Begin: 2007|06|20
;/ Versi: 0.0.1
;}/
#Progname="FLHonig"
Enumeration
;/ Winodws
#MainWin
;/ Gadgets
#ListGad
#TreeGad
#ButtonGad
#StringGad
;/ Menu and ToolBar
#MainMenu
#MainToolbar
#About
EndEnumeration
;{- Globale Variablen, Sprache, etc.
;/ MainWin-Position
Global WinPosX_MainWin
Global WinPosY_MainWin
Global WinMaxX_MainWin
Global WinMaxY_MainWin
;/ Preferences
Global Language
;{- Translation
Global Dim lang.s(24,1)
;German
lang(0,0) = "Datei"
lang(1,0) = "Hilfe"
lang(2,0) = "Über ..."
;English
lang(0,1) = "file"
lang(1,1) = "help"
lang(2,1) = "about"
;}
;}/
Procedure LoadPreferences(n$)
OpenPreferences(n$)
WinPosX_MainWin.l=ReadPreferenceLong("WINDOW_XPOS_MAIN",50);
WinPosY_MainWin.l=ReadPreferenceLong("WINDOW_YPOS_MAIN",50);
WinMaxX_MainWin.l=ReadPreferenceLong("WINDOW_XMAX_MAIN",750);
If WinMaxX_MainWin<750
WinMaxX_MainWin=750
EndIf
WinMaxY_MainWin.l=ReadPreferenceLong("WINDOW_YMAX_MAIN",550);
If WinMaxY_MainWin<550
WinMaxY_MainWin=550
EndIf
Language.l=ReadPreferenceLong("LANGUAGE",0);
ClosePreferences()
EndProcedure
Procedure SavePreferences(n$)
CreatePreferences(n$)
WritePreferenceLong("WINDOW_XPOS_MAIN",WindowX(#MainWin))
WritePreferenceLong("WINDOW_YPOS_MAIN",WindowY(#MainWin))
WritePreferenceLong("WINDOW_XMAX_MAIN",WindowWidth(#MainWin))
WritePreferenceLong("WINDOW_YMAX_MAIN",WindowHeight(#MainWin))
WritePreferenceLong("LANGUAGE",Language)
ClosePreferences()
EndProcedure
Procedure StandardMenu()
If CreateMenu(#MainMenu,WindowID(#MainWin))
MenuTitle(lang(0,Language))
MenuTitle(lang(1,Language))
MenuItem(#About,lang(2,Language))
EndIf
EndProcedure
LoadPreferences(#Progname+".ini")
If OpenWindow(#MainWin,WinPosX_MainWin,WinPosY_MainWin, WinMaxX_MainWin,WinMaxY_MainWin,":: FL :: "+#Progname) And CreateGadgetList(WindowID(#MainWin))
StandardMenu()
Repeat
Event= WaitWindowEvent()
If Event=#PB_Event_CloseWindow
If EventWindow()=#MainWin
Quit=1
EndIf
ElseIf Event=#PB_Event_Gadget
;{/ Gadgets
GadgetNr=EventGadget()
If GadgetNr
EndIf
;}
ElseIf Event=#PB_Event_Menu
;{/ Menu and ToolBar
MenuNr=EventMenu()
If MenuNr=#About
Debug "About Window aus Include-Datei"
EndIf
;}
ElseIf Event=#PB_Event_SizeWindow
;{/ resize Gadgets
If EventWindow()=#MainWin
EndIf
;}
EndIf
Until Quit
SavePreferences(#Progname+".ini")
CloseWindow(#MainWin)
EndIf
Möglichst einfach zu handhaben. Erweiterbar. Modular.
Meine Preference-Datei ist wohl noch nicht ideal wegen der globalen Variablen und wenn das Programm abstürzen sollte, speichert es natürlich auch seine Position nicht.
Breite und Höhe des Fensters werden mitgespeichert, falls man doch lieber ein RESIZE-Able-Window haben möchte.
Später dürfte es ein leichtes sein, dann in die Preference-Datei die Variablen für "Unterfenster" und andere Variablen hinzuzufügen.
Wie Options-Einstellungen, oder favorisierte Pfadeinstellungen beim Laden und Speichern von Dokumenten.
Hatte auch überlegt, ob Menu und Toolbar nicht eigentlich in jeden guten Anfang schon mit integriert werden sollten.
Genauso ein System, was es ermöglicht, später einfach die Sprache umzustellen.
Allerdings bin ich mir da nicht sicher, was günstiger wäre.
Ob man einfach eine neue Exe erstellt. Oder wirklich für jedes Wort eine Variable aus einer "Übersetzer-Textdatei" laden sollte.
Ich bevorzuge IF-Anweisungen statt Case. Von der Geschwindigkeit nehmen sie sich nichts. Find ich übersichtlicher.
Das Problem wäre nun, wie macht man es, wenn man 6 Fenster in einem Programm hat und die Preference-Datei alle Variablen enthalten soll?
Man könnte die Sache umgehen, in dem man bei jedem Schließen eines Fensters die Preference-Datei erneuert. Und die Abfrage, wie hoch und breit ein Fenster ist und an welcher Stelle es sich befindet, legt man in die Speicherung der Preference-Datei. Und beim Laden der Preference-Datei erstellt man auch die Fenster.
Aber schon da ist das Problem, dass ja nicht alle Fenster gleich auf sein müssen. Und jedes mal eine Datei laden, wenn ein Fenster geöffnet wird?
Ein Array oder eine LinkedList vielleicht? Ich weiß es nicht.
Aber bei vielen Fenstern wird es mit globalen Variablen doof.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Was haltet ihr im Allgemeinen von meinem Anfang?
Würde gern eure Anfangs-Vorschläge sehen und euch gleich vorweg bitten,
nicht sowas zu schreiben wie: Ist doch jedem selbst überlassen, wie er anfängt ...
>> Die Sache mit der Sprache müsste man sicherlich bei vielen Worten dann auch eher seperat in einer IncludeDatei oder in einer Textdatei machen.
Aber wenigstens die Standard-Sprachen sollten im Programm integriert sein, nicht dass man raten muss, welche Menüs vorhanden sind, wenn die Textdatei beschädigt wird.
Dank euch. Gruß, Folker