décembre
2008
Voici enfin la suite de ma série d’articles sur un exemple de persistance d’objets.
2.1.5 – Gestion des personnes
Nous allons maintenant implémenter les trois actions non activées de la catégorie Person : aEdit, aCreate et aDelete.
Pour éditer les propriétés ou attributs d’un objet Person, nous allons créer un formulaire de saisie FormPerson dans l’unité uFPerson.
2.1.5.1 – Formulaire de saisie
Le formulaire FormPerson est présenté dans la figure ci-dessous en mode de conception :
Il contient:
– trois TLabel : LabelLastName affichant « Nom : », LabelFirstName affichant « Prénom : » et LabelBirthDate affichant « Date de naissance : »
– deux TEdit : EditLastName et EditFirstName;
– un TDateTimePicker : DateTimePickerBirth;
– un TBitButton de type OKButton : bbtnValidate avec le texte « Valider ».
Les développeurs de tiOPF utilisent une méthode de classe Execute pour afficher le formulaire de saisie à la façon des composants Dialogues de Delphi. Je n’ai pu m’empêcher de les imiter. Tout le code concernant la mise à jour des données est ainsi encapsulé dans TFormPerson.
Vous remarquerez la propriété Data qui permet de synchroniser l’objet de classe TPerson passé en paramètre dans Create et les champs EditFirstName, EditLastName et DateTimePickerBirth.
bbtnValidate: TBitBtn;
DateTimePickerBirth: TDateTimePicker;
EditFirstName: TEdit;
EditLastName: TEdit;
LabelBirthDay: TLabel;
LabelFirstName: TLabel;
LabelLastName: TLabel;
procedure bbtnValidateClick(Sender: TObject);
private
FData: TPerson;
function GetData: TPerson;
procedure SetData(Value: TPerson);
public
class function Execute(aPerson: TPerson): Boolean;
property Data: TPerson read GetData write SetData;
end;
L’implémentation est des plus dépouillées:
begin
Data.Dirty:= True;
ModalResult := mrOK;
end;
La nouveauté dans le code ci-dessus est la propriété Dirty de la classe TPerson. Mettre Dirty à True sert à informer que l’objet courant n’a pas été ajouté à la liste People ou enregistré dans la table People d’une base de données.
begin
FormPerson := TFormPerson.Create(nil);
with FormPerson do
try
Data := aPerson;
ShowModal;
finally
Free;
end;
end;
La méthode de classe ne présente pas de difficulté particulière. Notez que l’objet à éditer dans le formulaire est passé en paramètre. La puissance de cette façon de faire réside dans les méthodes GetData et SetData.
begin
FData.FirstName := EditFirstName.Text;
FData.LastName := EditLastName.Text;
FData.BirthDate := DateTimePickerBirth.Date;
Result := FData;
end;
procedure TFormPerson.SetData(Value: TPerson);
begin
FData := Value;
EditFirstName.Text := FData.FirstName;
EditLastName.Text := FData.LastName;
DateTimePickerBirth.Date := FData.BirthDate;
end;
GetData et SetData permettent de synchroniser les champs du formulaire avec les champs de l’objet Data qui n’est autre que l’objet aPerson passé en paramètre de la méthode de classe Execute.