Page 1 sur 1

Sam 14/01/2012 - Actualités

Posté : sam. 14 janv. 2012 15:32
par Xavier
Sam 14/01/2012 - Actualités


14:30

La session de refactoring des services dédiés aux fenêtres des outils est achevée.
L'utilisation de Variants dans les services de lecture/écriture des Properties des Data a dû être revue à la baisse, cela a entrainé le passage en type Overload de certaines méthodes.

Le travail reprend maintenant sur l'outil Contacts et notamment sur sa ToolBar désormais unique et commune aux dossiers et données.
Afin de gérer la multitude de commandes exécutables par bouton, menu contextuel et raccourci-clavier, l'implémentation d'ActionLists va être essayée. Jusqu'à présent, les actions étaient associées aux boutons, et les raccourcis-claviers simulaient un clic sur ces boutons. Avec l'arrivée des menus contextuels, il s'agit de travailler sur des nouvelles bases plus propres et surtout plus évolutives.

Sam 14/01/2012 - Actualités

Posté : sam. 14 janv. 2012 17:13
par Xavier
16:10

Adoptées !

Ces ActionLists sont vraiment pratiques, et restent compatibles avec les méthodes "centralisées" de l'application qui visent à réduire le code source.
Le nouveau modèle est donc :
- Création d'une ActionList par onglet. (On verra plus tard si les boutons et menus cachés des fenêtres en méritent une.)
- Création d'une ImageList et association à l'ActionList.
- Définition d'actions génériques (par exemple "Create").
- Association des actions aux boutons et items de menus.
- Définition d'une unique méthode "Manage" (système actuel).
- Association de l'unique méthode de gestion à toutes les actions, puis analyse par composant. C'est ici que l'action "Create" va créer un dossier ou une donnée en fonction du composant actif.

Ce système de méthode unique "Manage" est utilisé depuis des années, il permet d'avoir une méthode de gestion par onglet plutôt que par composants :shock: et permet ainsi d'éviter la duplication du code d'initialisation des variables.

Il faudra quand même gérer les raccourcis-claviers via une méthode spécifique, mais ils appeleront désormais les actions.

Une tentative d'utiliser les ToolBar a été tentée mais a été vite rejetée, les boutons étant arrondis sous Windows Seven :
TToolBar_Seven.png
Les barres d'outils resteront donc artisanales (un Panel avec des SpeedButtons définis manuellement.)

Re: Sam 14/01/2012 - Actualités

Posté : sam. 14 janv. 2012 18:11
par Denis
oui, très pratiques en effet. Il suffit par exemple de rendre un action "disabled" et toutes ses utilsiatiosn dans l'IHM sont grisées d'un seul coup (menu, menu contextuel, boutons;..)
En revanche, je crois me souvenir d'un bug avec le menu contextuel... que j'avais fini par remplacer par un composant tiers...

Re: Sam 14/01/2012 - Actualités

Posté : sam. 14 janv. 2012 19:21
par Xavier
DMo a écrit :oui, très pratiques en effet. Il suffit par exemple de rendre un action "disabled" et toutes ses utilsiatiosn dans l'IHM sont grisées d'un seul coup (menu, menu contextuel, boutons;..)
En revanche, je crois me souvenir d'un bug avec le menu contextuel... que j'avais fini par remplacer par un composant tiers...
Damned, dès que quelque chose est pratique en Delphi, c'est buggué. :cry:

Je mets les Captions des SpeedButton à '' au design, mais Delphi me mets les Caption des Actions au runtime, du coup mes zolis boutons affichent le milieu du texte au lieu de l'icône. Et si j'enlève les Captions des Actions, ce sont les Items du PopupMenu qui sont vides. :evil:

Ca sent la boucle de reset des Captions des SpeedButtons dans le OnCreate de la Form... et tant pis pour le code propre.

Re: Sam 14/01/2012 - Actualités

Posté : sam. 14 janv. 2012 19:35
par Xavier
XMo a écrit : ...
Ca sent la boucle de reset des Captions des SpeedButtons dans le OnCreate de la Form... et tant pis pour le code propre.
Ca fera juste une ligne pour appeler ce service :

Code : Tout sélectionner

//------------------------------------------------------------------------------
// FixButtons : enlève les Captions des SpeedButtons
// 14/01/2012 - XT400
//------------------------------------------------------------------------------
procedure FixButtons(Panel: TPanel);
var
	Control_Count: Byte;
	Control_Index: Byte;
	Control: TControl;
begin
	Control_Count := Panel.ControlCount;
	for	Control_Index := 0 to (Control_Count - 1)
	do	begin
		Control := Panel.Controls[Control_Index];
		if	Control is TSpeedButton
		then	TSpeedButton(Control).Caption := '';
		end;
end;


Re: Sam 14/01/2012 - Actualités

Posté : sam. 14 janv. 2012 20:19
par Denis
Tu n'as pas - plus simplement - une propriété des boutons à modifier pour qu'ils n’affichent que les icônes???

Vive le forum, ca remplace la messagerie instantanée ;-)