Contre toute attente, la gestion des faux onglets est très facile grâce aux nouveaux objets "XD" (Options - Paramètres) implémentés cette semaine. Cela fonctionne avec très peu de code, grâce à la mise en place d'une norme de développement générique qui recherche les objets (boutons, panneaux) et les met à jour selon les variables de l'XD :
//------------------------------------------------------------------------------
// XST_ManageTabs
// 07/01/2012 - XT400
//------------------------------------------------------------------------------
function XST_ManageTabs(Form: TForm; XD: TData): Byte;
var
Tab_Number: Byte;
Tab_Index: Byte;
Widget_Name: String;
Tab_Button: TSpeedButton;
Tab_Panel: TPanel;
begin
// Préparations
Result := 0;
Tab_Number := StrToInt(XD.GetProp('TabNumber'));
// Mises à jour
for Tab_Index := 0 to (Tab_Number - 1)
do begin
// Gestion du bouton
Widget_Name := 'Form_Button_' + IntToStr(Tab_Index);
Tab_Button := TSpeedButton(Form.FindComponent(Widget_Name));
if Tab_Button.Down
then begin
XD.SetProp('ActiveTab', IntToStr(Tab_Index));
Result := Tab_Index;
end;
// Gestion du panneau
Widget_Name := 'Form_Tab_' + IntToStr(Tab_Index);
Tab_Panel := TPanel(Form.FindComponent(Widget_Name));
Tab_Panel.Visible := Tab_Button.Down;
end;
end;
On note au passage la puissance des "XD", puisque la création d'une nouvelle variable se fait dynamiquement par "XD.SetProp(Variable, Value)", et qu'il n'y a pas besoin de modifier la structure réelle de l'objet. Le stockage se fait dans le champ "Term" de l'objet (qui est une liste de chaine) sous la forme "Variable=Value".
La gestion des XD a encore été améliorée, avec un lien de l'objet vers la fenêtre.
Tout le code existant dédié à la gestion de la fenêtre a été factorisé et déporté dans les Services:
Création de la fenêtre (positionnement, dimensionnement, initialisation des composants).
Gestion des boutons et raccourcis de la fenêtre (fermeture, sauvegardes, aide).
Gestion de la taille minimale et de l'aimantation.
Fermeture de la fenêtre (sauvegarde des position et dimension selon les options).
La prochaine étape est une gestion générique des options, avant le passage au coeur "métier", la gestion des Contacts.
Cette nouvelle fenêtre étant un concentré de factorisation, il faudra ensuite retravailler sur la Barre afin de pouvoir livrer un prototype et de recueillir des avis avant le passage aux autres outils.