Ecrire du code pour initialiser l'application (tutoriel dbExpress)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Tutoriel : Utilisation de dbExpress pour visualiser et mettre à jour les bases de données d'une application

Quand l'application est lancée, nous allons effectuer quelques initialisations.

Déclarations supplémentaires

Vous devez déclarer quelques variables.

Delphi

Cliquez sur l'onglet Code.

Ajoutez "DBXDataExpressMetaDataProvider" à la clause uses. Assurez-vous que "iniFiles" et "strUtils" se trouvent aussi dans la clause uses.

Ajoutez les déclarations suivantes à la partie type de la section interface :

  private
    { Private declarations }
    TableName: String;
    AllTables: TStringList;  //list of database tables
    FMetaDataProvider: TDBXDataExpressMetaDataProvider;
    MemoForm: TFormCurrentField;  //form to view individual elements in database table

Nous utiliserons ces variables plus tard. En particulier, TFormCurrentField est un type que nous déclarerons dans une section ultérieure.

Ajoutez une constante requise pour l'initialisation à la fin de la section interface :

const
  sDefaultFilterText = 'Filter (* as wild)';

C++

Cliquez sur l'onglet cdsmain.h et ajoutez la ligne suivante au reste des #includes :

# include <DBXDataExpressMetaDataProvider.hpp>

Ajoutez ces variables sous private dans cdsmain.h :

private:	// Déclarations utilisateur
  // Private declarations
  String TableName;
  TStringList *AllTables;  //list of database tables
  TDBXDataExpressMetaDataProvider *FMetaDataProvider;
  TFormCurrentField *MemoForm;  //form to view individual elements in database table

Nous utiliserons ces variables plus tard. En particulier, TFormCurrentField est un type que nous déclarerons dans une section ultérieure.

Ajoutez une constante requise pour l'initialisation dans cdsmain.h :

# define sDefaultFilterText "Filter (* as wild)"

Code d'initialisation

Ajoutez maintenant le code d'initialisation pour cette application exemple. Dans la vue Conception, sélectionnez la fiche, puis double-cliquez sur l'événement OnCreate dans l'onglet Evénement de l'inspecteur d'objets. Cette action crée le stub du gestionnaire d'événement et bascule la focalisation sur l'éditeur de code. Nous ajoutons le code suivant :

Delphi

procedure TForm2.FormCreate(Sender: TObject);
var
  IniFile: TIniFile;
  SectionsList: TStringList;  //for list of connections
  TempStr: String;
  I: Integer;
begin
  EditFilter.Text := sDefaultFilterText;
  // Get information on current database connections
  IniFile := TIniFile.Create(GetConnectionRegistryFile);

  // Get a list of the database connections available
  SectionsList := TStringList.Create;
  IniFile.ReadSections(SectionsList);

  // Add the connections to the combo box.
  // Each valid connection should end with the characters 'CONNECTION',
  // and only these are added.
  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;

  // Free objects no longer needed.
  FreeAndNil(IniFile);
  FreeAndNil(SectionsList);
end;

C++

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  TIniFile *IniFile;
  TStringList *SectionsList;  //for list of connections
  String TempStr;
  int I;

  // Initialize objects
  AllTables = NULL;
  FMetaDataProvider = NULL;
  MemoForm = NULL;

  EditFilter->Text = sDefaultFilterText;

  // Get information on current database connections
  IniFile = new TIniFile(GetConnectionRegistryFile());

  // Get a list of the database connections available
  SectionsList = new TStringList();
  IniFile->ReadSections(SectionsList);

  // Add the connections to the combo box.
  // Each valid connection should end with the characters 'CONNECTION',
  // and only these are added.
  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]);
}
  }

  // Free objects no longer needed.
  delete IniFile;
  IniFile = NULL;
  delete SectionsList;
  SectionsList = NULL;
}

Commentaires

La fonction GetConnectionRegistryFile obtient des informations sur toutes les connexions de l'explorateur de données. Ce String est nécessaire pour le constructeur TIniFile. Nous pouvons alors utiliser la procédure ReadSections de l'objet TIniFile pour obtenir la liste de toutes les connexions de base de données.

Seules les connexions dont le nom se termine par "CONNECTION" sont en fait ajoutées à la boîte à options.

Précédent

Remplir le dialogue principal avec des composants

Suivant

Développer du code pour gérer les événements principaux