170 likes | 340 Views
Verwalten von Optionen und Einstellungen in VFP-Anwendungen. CeBIT-Regionaltreffen 19.03.2004. Optionen/Einstellungen. Andreas Flohr/Torsten Weggen INDISoftware GmbH http://www.indisoftware.de. Einleitung. Die Einstellungen einer Anwendung:.
E N D
Verwalten von Optionen und Einstellungen in VFP-Anwendungen CeBIT-Regionaltreffen 19.03.2004 Optionen/Einstellungen Andreas Flohr/Torsten Weggen INDISoftware GmbH http://www.indisoftware.de
Einleitung Die Einstellungen einer Anwendung: • In jeder Anwendung benötigen Sie Informationen, mit denen Sie Ihre • Anwendung steuern. Diese Informationen werden normalerweise • in der Registry, oder • in einer INI-Datei, oder • in einer Datenbanktabelle oder • ... abgelegt. • Dabei gibt es die unterschiedlichsten Möglichkeiten, mit welchen Strukturen • diese Informationen abgelegt werden. • Wäre es nicht sinnvoll, alle Zugriffe auf außerhalb der Anwendung abgelegte Optionen und Einstellungen über eine zentrale Schnittstelle anzusprechen, unabhängig davon, ob sich diese in einer INI-Datei, der Registry oder in einer Datenbanktabelle befinden ?
Einleitung Die Aufgabenstellung: 1. Erstellen einer zentralen Schnittstelle, die sich transparent gegenüber der Anwendung verhält, egal wie die Einstellungen gelesen oder geschrieben werden. 2. Es muss möglich sein, Einstellungen zentral für alle Anwender oder userspezifisch pro Anwender abzulegen. 3. Die Schnittstelle muss sowohl in einer Dialoganwendung als auch in einer nicht-visuellen Anwendung verfügbar sein. 4. Es sollte einen Standarddialog geben, der nur für die individuell erforderlichen Einstellungen einer Anwendung angepasst werden muss.
Einleitung Das Konzept: • Erstellung einer Klassenbibliothek mit den Klassen für das spezifische Lesen und Schreiben von Einstellungen aus einer INI-Datei, der Registry oder einer Datenbanktabelle. • Erstellung einer Klassenbibliothek mit den Klassen, die sich gegenüber der Anwendung transparent verhalten, unabhängig von der verwendeten Ablageart und Struktur. • Erstellung einer Klassenbibliothek mit den visuellen Klassen, die für den Standarddialog genutzt werden.
Das Ergebnis Die Klassenbibliotheken:
Das Ergebnis Die Systemarchitektur: loOption = CREATEOBJECT("OptionHandler“,“INI“,"MeineApp.ini")
Optionenhandler Das Ansprechen der Optionen-Klasse lnAnzahlRechnungen = loOption.DoCmd("readOption","AnzRechnung") *-- loOption.doCmd: DO CASE CASE tcCmd = "ReadOption" luRet = THIS.oCmd.ReadOption(tu1…) … ENDCASE *-- In oCmd.ReadOption (oCmd ist Instanz von option_ini) luRet = THIS.oINI.ReadPrivateProfileString(tu1,…)
Methoden der Optionenklasse Methoden zum Lesen des festen "Optionen"-Schlüssels (-Section,Node)
Methoden der Optionenklasse Methoden zum Lesen eines variablen („User“)-Schlüssels (-Section,Node)
Methoden der Optionenklasse Methoden zum Verwalten der variablen ("User-") Schlüssel
Die Ablage Darstellung in INI-Datei [Pfade] Daten=C:\MeineApp\Tabellen Reports= C:\MeineApp\Reports [URL] Update=http://www.domain.de/Download/Patches [USER_Meier] ForeColor=RGB(255,0,0) BackColor= RGB(0,0,0) [USER_Meier\Querys] Query1=SELECT * FROM Adressen WHERE Name LIKE 'B%"
Die Ablage Darstellung in der Registry [HKEY_LOCAL_MACHINE\SOFTWARE\INDISoftware\ClassMaxx] [HKEY_LOCAL_MACHINE\SOFTWARE\INDISoftware\ClassMaxx\1.0] [HKEY_LOCAL_MACHINE\SOFTWARE\INDISoftware\ClassMaxx\1.0\Optionen] [HKEY_LOCAL_MACHINE\SOFTWARE\INDISoftware\ClassMaxx\1.0\Optionen\Pfade] "Daten"="C:\\MeineApp\\Tabellen" "Reports"="C:\\MeineApp\\Reports„ [HKEY_LOCAL_MACHINE\SOFTWARE\INDISoftware\ClassMaxx\1.0\Optionen\Url] "Update"=http://www.domain.de/Download/Patches [HKEY_LOCAL_MACHINE\SOFTWARE\INDISoftware\ClassMaxx\1.0\Meier] "ForeColor"="RGB(0,0,0)" "BackColor"="RGB(255,0,0)“ [HKEY_LOCAL_MACHINE\SOFTWARE\INDISoftware\ClassMaxx\1.0\Meier\Querys] "Query1"="SELECT * FROM Adressen WHERE Name LIKE 'B%\""
Die visuellen Klassen Die Klassenbibliothek _cmOptionV.vcx:
Die visuellen Klassen Was müssen Sie vorbereiten (Page-Klassen)? • Erstellen Sie Ihr eigenes Formular, basierend auf der Klasse frmOptionDef. • Erstellen Sie Ihre eigenen Page-Klassen, basierend auf der Klasse cmOptionPageDef in Ihrer eigenen Klassenbibliothek und legen Sie dort Ihre Controls an. • Füllen Sie die Eigenschaft Caption der Page. Dieser Name wird später als Nodename innerhalb des Treeviews sowie als Titel der Seite verwendet. Wenn Sie einen untergeordneten Node erzeugen wollen, geben Sie in die Eigenschaft Caption den Namen des untergeordneten Nodes sowie einen Backslash und dann den Namen dieser Page ein (z.B. Mail\FTP-Einstellungen). • In die Eigenschaft cPicture können Sie dann noch eine Bilddatei eintragen, welche vor dem jeweiligen Node für diese Seite angezeigt werden soll.
Die visuellen Klassen Was müssen Sie vorbereiten (Page-Klassen)? • Füllen Sie die jeweilige Methode FillArrayOptions() ihrer Page-Klassen, die standardmäßig leer sind. Das Array aOptions[] muss für jedes Textbox und Checkbox Control auf der Seite folgende Spalten enthalten: [n,1] der Name der Controls [n,2] der Name, unter dem die Option gespeichert wird [n,3] den Defaultwert. • Evtl. weitere vohandene Steuerelemente wie Comboboxen oder Commandbuttons werden nicht im Array eingetragen, Da sie eine andere Behandlung benötigen. Das Füllen mit Daten und die Verarbeitung innerhalb der Seite können Sie in den Methoden GetValuesExt(), ProcessExt(), ReadExt() und ShowValuesExt() durchführen.
Die visuellen Klassen Was müssen Sie vorbereiten (Pageframe-Klasse)? • Legen sie mit der Einstellung in der Eigenschaft nReadPropertyFrom der Klasse cmOptionPgfDef in Ihrem erstellten Formular fest, wo von die Einstellungen gelesen werden sollen. • Füllen Sie jetzt die Methode FillOptionsPages() der Klasse cmOptionPgfDefin Ihrem erstellten Formular. Das Array aOptionPages[] muss für jede von Ihnen erstellte Page-Klasse folgende Spalten enthalten: • [n,1] den Klassennamen der zu instanzierenden Page [n,2] der Schlüssel, unter dem die Einstellungen abgespeichert wird
Verwalten von Optionen und Einstellungen in VFP-Anwendungen CeBIT-Regionaltreffen 19.03.2004 Optionen/Einstellungen Andreas Flohr/Torsten Weggen INDISoftware GmbH http://www.indisoftware.de