Tutoriel : Utilisation de TAdapterBindSource et du Concepteur LiveBindings
Remonter à Tutoriels Bases de données et LiveBindings
Ce tutoriel montre comment utiliser le Concepteur LiveBindings et TAdapterBindSource afin de créer visuellement des LiveBindings entre les contrôles existants et les objets personnalisés pour le développement rapide des applications qui nécessitent peu de code, ou pas du tout.
Sommaire
Etape 1 : Création du projet
Créez un nouveau projet. Choisissez une application multi-périphérique HD pour cet exemple.
- Faites glisser et déposez un composant TAdapterBindSource sur le Concepteur de fiches.
- Faites glisser et déposez un composant TDataGeneratorAdapter sur le Concepteur de fiches.
- Dans la palette d'outils, localisez un composant TBindNavigator et déposez-le sur la fiche.
- Faites de même avec un contrôle TGrid.
Dans ce tutoriel, vous apprendrez à construire une application qui utilise plusieurs méthodes pour changer la couleur de remplissage d'un rectangle (navigation dans un jeu de données aléatoires avec des couleurs, typage direct d'un ID de couleur, ou sélection d'une couleur dans une liste).
L'image suivante représente la fiche après y avoir placé les composants.
Etape 2 : Création d'un objet personnalisé (Adaptee)
Lors de ce tutoriel, vous allez créer un objet personnalisé qui représentera un employé. Vous allez donc concevoir une classe TEmployee contenant des informations sur une personne. Il s'agit de l'objet personnalisé que vous adapterez en utilisant l'objet TAdapterBindSource.
Dans votre projet :
- Ajoutez une nouvelle unité à votre projet. Pour cela, accédez à Fichier > Nouveau > Unité - Delphi.
- Enregistrez votre nouvelle unité sous EmployeeAdaptee.pas.
- Ajoutez le code source suivant à votre nouvelle unité :
unit EmployeeAdaptee;
interface
type
{ An Employee model object that will be adapted and enabled for LiveBindings usage. }
TEmployee = class(TObject)
private
FFirstName: String;
FLastName: String;
FAge: Byte;
FStartDate: TDate;
FPosition: String;
FManager: String;
public
constructor Create(const AFirstName, ALastName: String; const AAge: Byte;
const AStartDate: TDate; const APosition, AManager: String); overload;
property FirstName: String read FFirstName write FFirstName;
property LastName: String read FLastName write FLastName;
property Age: Byte read FAge write FAge;
property StartDate: TDate read FStartDate write FStartDate;
property Position: String read FPosition write FPosition;
property Manager: String read FManager write FManager;
end;
implementation
{ TEmployee }
constructor TEmployee.Create(const AFirstName, ALastName: String; const AAge: Byte;
const AStartDate: TDate; const APosition, AManager: String);
begin
inherited Create;
FFirstName := AFirstName;
FLastName := ALastName;
FAge := AAge;
FStartDate := AStartDate;
FPosition := APosition;
FManager := AManager;
end;
end.
L'unité ci-dessus implémente un objet Employee capable de modéliser les employés d'une entreprise, par exemple. Vous pouvez ajouter les champs de votre choix afin de modéliser les employés en fonction de vos besoins.
Etape 3 : Utilisation de l'objet personnalisé (Adaptee)
Revenez à votre fiche principale et accédez à Fichier > Utiliser l'unité (ou alternativement Alt+F11), sélectionnez Interface, puis l'unité EmployeeAdaptee.pas.
Cela garantit que votre unité EmployeeAdaptee.pas est utilisée dans la clause uses à l'intérieur de la section interface de votre unité principale.
Pour utiliser votre nouvel objet avec le framework LiveBindings :
- Dans le Concepteur de fiches, cliquez sur le composant AdapterBindSource1 et localisez la propriété Adapter dans l'inspecteur d'objets.
- Sélectionnez le composant DataGeneratorAdapter1 que vous avez précédemment ajouté. Votre objet devient maintenant une source de données liable.
- Lancez le Concepteur LiveBindings en choisissant Voir > Concepteur LiveBindings.
- Liez la propriété * du composant grille à la propriété * du composant AdapterBindSource1.
- Lorsque toutes les liaisons sont terminées, vous devez ajouter des informations relatives à l'employé au composant AdapterBindSource1.
- Dans le Concepteur de fiches, localisez le composant AdapterBindSource1 puis, dans l'inspecteur d'objets, accédez à l'onglet Evénements.
- Recherchez l'événement OnCreateAdapter et double-cliquez sur celui-ci pour accéder à la vue Code afin d'ajouter les données exemple avec du code similaire au code suivant :
procedure TMain.AdapterBindSource1CreateAdapter(Sender: TObject; var ABindSourceAdapter: TBindSourceAdapter);
var
LEmployee: TEmployee;
begin
LEmployee := TEmployee.Create('John', 'Anders', 26, StrToDate('10/10/2011'), 'Developer', 'Adrian Hermann');
ABindSourceAdapter := TObjectBindSourceAdapter<TEmployee>.Create(Self, LEmployee);
end;
Etape 4 : Exécution de l'application
Il ne vous reste plus qu'à exécuter l'application en appuyant sur F9 ou en utilisant le menu Exécuter.
Votre employé a été ajouté à la grille.
Etape 5 : Ajout de champs lors de la conception
Afin d'illustrer comment il est possible d'obtenir des champs en mode conception pouvant être connectés à d'autres contrôles dans le Concepteur LiveBindings, vous utiliserez le composant DataGeneratorAdapter1. Vous ajouterez ensuite les champs générés avec un nom identique à ceux de vos employés, puis vous pourrez connecter les champs individuels aux contrôles individuels si vous le souhaitez.
L'ajout des champs individuels au composant DataGeneratorAdapter1 est très simple :
- Dans le Concepteur de fiches, localisez le composant DataGeneratorAdapter1 et effectuez un clic droit.
- Sélectionnez la commande Ajouter un champ.
- Dans la boîte de dialogue Ajouter un champ, sélectionnez (aucun) de type
ftString
pour ajouter un nouveau champ. - Répétez les étapes pour les autres données : LastName (avec (aucun),
ftString
), Age (avec (aucun),ftInteger
), StartDate (avec (aucun),ftDate
), Position (avec (aucun),ftString
), et Manager (avec (aucun),ftString
)
. - Vous pouvez maintenant utiliser les champs individuels pour les lier à d'autres contrôles (une zone d'édition ou un libellé, par exemple).