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 #include
s :
# 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