Schreiben des Quellcodes zur Initialisierung der Anwendung (dbExpress-Tutorial)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Tutorial: Mit dbExpress Datenbanken in einer Anwendung anzeigen und aktualisieren

Beim Aufruf der Anwendung müssen einige Initialisierungen ausgeführt werden.

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