Ecrire du code pour initialiser l'application (tutoriel dbExpress)
Quand l'application est lancée, nous allons effectuer quelques initialisations.
Sommaire |
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