Schreiben des Quellcodes zur Initialisierung der Anwendung (dbExpress-Tutorial)
Nach oben zu Tutorial: Mit dbExpress Datenbanken in einer Anwendung anzeigen und aktualisieren
Beim Aufruf der Anwendung müssen einige Initialisierungen ausgeführt werden.
Inhaltsverzeichnis
Zusätzliche Deklarationen
Sie müssen einige Variablen deklarieren.
Delphi
Klicken Sie auf das Register Code.
Fügen Sie der uses
-Klausel den Eintrag "DBXDataExpressMetaDataProvider" hinzu. Stellen Sie sicher, dass auch die Units "iniFiles" und "strUtils" in der uses
-Klausel enthalten sind.
Fügen Sie in den Bereich type
im interface
-Abschnitt die folgenden Deklarationen ein:
private
{ Private-Deklarationen }
TableName: String;
AllTables: TStringList; //Liste der Datenbanktabellen
FMetaDataProvider: TDBXDataExpressMetaDataProvider;
MemoForm: TFormCurrentField; //Formular zum Anzeigen einzelner Elemente aus einer Datenbanktabelle
Diese Variablen werden später verwendet. Insbesondere wird der Typ TFormCurrentField
in einem späteren Abschnitt deklariert.
Fügen Sie am Ende des interface
-Abschnitts eine Konstante hinzu, die für die Initialisierung benötigt wird:
const
sDefaultFilterText = 'Filter (* as wild)';
C++
Klicken Sie auf das Register cdsmain.h, und fügen Sie der #include
-Liste Folgendes hinzu:
# include <DBXDataExpressMetaDataProvider.hpp>
Fügen Sie diese Variablen unter private
in cdsmain.h ein:
private: // Benutzer-Deklarationen
// Private-Deklarationen
String TableName;
TStringList *AllTables; //Liste der Datenbanktabellen
TDBXDataExpressMetaDataProvider *FMetaDataProvider;
TFormCurrentField *MemoForm; //Formular zum Anzeigen einzelner Elemente aus einer Datenbanktabelle
Diese Variablen werden später verwendet. Insbesondere wird der Typ TFormCurrentField
in einem späteren Abschnitt deklariert.
Fügen Sie cdsmain.h eine Konstante hinzu, die für die Initialisierung benötigt wird:
# define sDefaultFilterText "Filter (* as wild)"
Initialisierungscode
Fügen Sie nun den Initialisierungscode für diese Beispielanwendung hinzu. Wählen Sie auf der Registerkarte Design das Formular aus, und doppelklicken Sie dann auf der Registerkarte Ereignisse des Objektinspektors auf das Ereignis OnCreate
. Ein Stub der Ereignisbehandlungsroutine wird erstellt und der Fokus in den Quelltext-Editor gesetzt. Fügen Sie den folgenden Quellcode hinzu:
Delphi
procedure TForm2.FormCreate(Sender: TObject);
var
IniFile: TIniFile;
SectionsList: TStringList; //für die Verbindungsliste
TempStr: String;
I: Integer;
begin
EditFilter.Text := sDefaultFilterText;
// Informationen über die aktuellen Datenbankverbindungen ermitteln
IniFile := TIniFile.Create(GetConnectionRegistryFile);
// Eine Liste der verfügbaren Datenbankverbindungen ermitteln
SectionsList := TStringList.Create;
IniFile.ReadSections(SectionsList);
// Die Verbindungen in das Kombinationsfeld einfügen
// Jede gültige Verbindung sollte mit den Zeichen 'CONNECTION' enden.
// Nur diese Verbindungen werden hinzugefügt.
SectionsList.Sort;
for I := 0 to SectionsList.Count - 1 do
begin
TempStr := UpperCase(AnsiRightStr(SectionsList[I], Length('connection')));
if TempStr = 'CONNECTION' then
begin
ComboBoxConnections.Items.Add(SectionsList[I]);
end;
end;
// Nicht mehr benötigte Objekte freigeben
FreeAndNil(IniFile);
FreeAndNil(SectionsList);
end;
C++
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TIniFile *IniFile;
TStringList *SectionsList; //für die Verbindungsliste
String TempStr;
int I;
// Objekte initialisieren
AllTables = NULL;
FMetaDataProvider = NULL;
MemoForm = NULL;
EditFilter->Text = sDefaultFilterText;
// Informationen über die aktuellen Datenbankverbindungen ermitteln
IniFile = new TIniFile(GetConnectionRegistryFile());
// Eine Liste der verfügbaren Datenbankverbindungen ermitteln
SectionsList = new TStringList();
IniFile->ReadSections(SectionsList);
// Die Verbindungen in das Kombinationsfeld einfügen
// Jede gültige Verbindung sollte mit den Zeichen 'CONNECTION' enden.
// Nur diese Verbindungen werden hinzugefügt.
SectionsList->Sort();
for (I = 0; I < SectionsList->Count; I++)
{
TempStr = UpperCase(AnsiRightStr(SectionsList->Strings[I], strlen("connection")));
if (TempStr == "CONNECTION")
{
ComboBoxConnections->Items->Add(SectionsList->Strings[I]);
}
}
// Nicht mehr benötigte Objekte freigeben
delete IniFile;
IniFile = NULL;
delete SectionsList;
SectionsList = NULL;
}
Kommentare
Die Funktion GetConnectionRegistryFile ermittelt Informationen über alle Verbindungen im Daten-Explorer. Dieser String
wird für den TIniFile-Konstruktor benötigt. Anschließend kann mit der Prozedur ReadSections des TIniFile-Objekts eine Liste aller Datenbankverbindungen abgerufen werden.
Nur Verbindungen, die mit "CONNECTION" enden, werden dem Kombinationsfeld hinzugefügt.
Zurück
Einfügen von Komponenten in das Hauptdialogfeld
Weiter
Entwickeln des Quellcodes zur Behandlung von Hauptereignissen