Ven 10/02/2012 - Actualités

Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Ven 10/02/2012 - Actualités

Message non lu par Xavier »

Ven 10/02/2012 - Actualités


14:30

Correction de bug : le seul moyen de permettre un coupage ou une copie, suivis de multiples collages et en fait de procéder à la copie de la donnée lors de l'opération de collage, l'opération de copie ne devant en fait rien faire que "marquer" la donnée.
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Ven 10/02/2012 - Actualités

Message non lu par Xavier »

15:30

Copier la donnée lors de l'opération de collage n'est pas mieux car du coup les opérations de coupage créent des données orphelines qui s'accumulent.

Retour à la case départ avec une astuce :
  • Couper : détache la donnée de son parent, et met à jour la fenêtre. La donnée est conservée à l'ombre.
  • Copier : crée une nouvelle donnée par duplication. La donnée est conservée à l'ombre.
  • Coller : colle la donnée conservée à l'ombre. Et en refait immédiatement une autre copie pour pouvoir faire un autre collage si besoin.
Grâce à cette astuce, le collage multiple est possible, et l'encombrement mémoire supplémentaire se résume à une seule donnée (et ses descendants).
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Ven 10/02/2012 - Actualités

Message non lu par Xavier »

16:30

Toute la puissance des Booleans illustrée par la méthode chargée de contexter le menu et les boutons. :)

Code : Tout sélectionner

//------------------------------------------------------------------------------
// Contacts_UpdateContext : met à jour les contextualisations
// 10/02/2012 - XT400
//------------------------------------------------------------------------------
procedure TContacts_Form.Contacts_UpdateContext(Sender: TObject);
var
	Tree: Boolean;
	List: Boolean;
	Node: TTreeNode;
	Item: TListItem;
begin
	// Gestion des logs
	XSK_Log('Code', 'XContacts', 'Contacts_UpdateContext');

	// Préparations
	Tree := (Self.ActiveControl = Contacts_Tree);
	List := (Self.ActiveControl = Contacts_List);
	Node := Contacts_Tree.Selected;
	Item := Contacts_List.Selected;

	// Contextualisation du menu
	Contacts_NewFolder_Item.Visible := Tree;
	Contacts_NewFolder_Item.Enabled := True;
	Contacts_NewContact_Item.Visible := List;
	Contacts_NewContact_Item.Enabled := True;
	Contacts_NewInfo_Item.Visible := List;
	Contacts_NewInfo_Item.Enabled := (List and (Item <> Nil));
	Contacts_Rename_Item.Visible := True;
	Contacts_Rename_Item.Enabled := ((Tree and (Node.Level > 0)) or (List and (Item <> Nil)));
	Contacts_Edit_Item.Visible := List;
	Contacts_Edit_Item.Enabled := (List and (Item <> Nil) and (Item.SubItems[1] = 'Information'));
	Contacts_Up_Item.Visible := True;
	Contacts_Up_Item.Enabled := ((Tree and (Node.Level > 0)) or (List and (Item <> Nil)));
	Contacts_Down_Item.Visible := True;
	Contacts_Down_Item.Enabled := ((Tree and (Node.Level > 0)) or (List and (Item <> Nil)));
	Contacts_Delete_Item.Visible := True;
	Contacts_Delete_Item.Enabled := ((Tree and (Node.Level > 0)) or (List and (Item <> Nil)));
	Contacts_Cut_Item.Visible := True;
	Contacts_Cut_Item.Enabled := ((Tree and (Node.Level > 0)) or (List and (Item <> Nil) and (Item.SubItems[1] = 'Contact')));
	Contacts_Copy_Item.Visible := True;
	Contacts_Copy_Item.Enabled := ((Tree and (Node.Level > 0)) or (List and (Item <> Nil) and (Item.SubItems[1] = 'Contact')));
	Contacts_Paste_Item.Visible := True;
	Contacts_Paste_Item.Enabled := (LV_Data <> Nil);

	// Contextualisation des boutons
	Contacts_Rename_Button.Enabled := Contacts_Rename_Item.Enabled;
	Contacts_Up_Button.Enabled := Contacts_Up_Item.Enabled;
	Contacts_Down_Button.Enabled := Contacts_Down_Item.Enabled;
	Contacts_Delete_Button.Enabled := Contacts_Delete_Item.Enabled;
	Contacts_Cut_Button.Enabled := Contacts_Cut_Item.Enabled;
	Contacts_Copy_Button.Enabled := Contacts_Copy_Item.Enabled;
	Contacts_Paste_Button.Enabled := Contacts_Paste_Item.Enabled;
end;
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Ven 10/02/2012 - Actualités

Message non lu par Xavier »

16:45

Encore optimisé...

Code : Tout sélectionner

	// Préparations
	Tree_Node := Contacts_Tree.Selected;
	List_Item := Contacts_List.Selected;
	Tree := (Self.ActiveControl = Contacts_Tree);
	List := (Self.ActiveControl = Contacts_List);
	SubFolder := (Tree_Node.Level > 0);
	Item := (List_Item <> Nil);
	Contact := (Item and (List_Item.SubItems[1] = 'Contact'));
	Information := (Item and (List_Item.SubItems[1] = 'Information'));

	// Contextualisation du menu
	Contacts_NewFolder_Item.Visible := Tree;
	Contacts_NewFolder_Item.Enabled := True;
	Contacts_NewContact_Item.Visible := List;
	Contacts_NewContact_Item.Enabled := True;
	Contacts_NewInfo_Item.Visible := List;
	Contacts_NewInfo_Item.Enabled := (List and Item);
	Contacts_Rename_Item.Visible := True;
	Contacts_Rename_Item.Enabled := ((Tree and SubFolder) or (List and Item));
	Contacts_Edit_Item.Visible := List;
	Contacts_Edit_Item.Enabled := (List and Information);
	Contacts_Delete_Item.Visible := True;
	Contacts_Delete_Item.Enabled := ((Tree and SubFolder) or (List and Item));
	Contacts_Cut_Item.Visible := True;
	Contacts_Cut_Item.Enabled := ((Tree and SubFolder) or (List and Contact));
	Contacts_Copy_Item.Visible := True;
	Contacts_Copy_Item.Enabled := ((Tree and SubFolder) or (List and Contact));
	Contacts_Paste_Item.Visible := True;
	Contacts_Paste_Item.Enabled := (LV_Data <> Nil);
	Contacts_Up_Item.Visible := True;
	Contacts_Up_Item.Enabled := ((Tree and SubFolder) or (List and Item));
	Contacts_Down_Item.Visible := True;
	Contacts_Down_Item.Enabled := ((Tree and SubFolder) or (List and Item));
Maintenant les icônes...
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Ven 10/02/2012 - Actualités

Message non lu par Xavier »

18:40

Même Delphi 2010 n'a pas réussi à griser les icônes en 24 bits, donc travail artisanal sous Paint mais le résultat final est correct :
Greyed.png
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Ven 10/02/2012 - Actualités

Message non lu par Xavier »

19:30

Le dernier bug recensé est corrigé.
Il reste encore à gérer le drag-and-drop de Contacts de la liste vers l'arbre et l'outil devrait être prêt.
Denis
Messages : 180
Enregistré le : jeu. 23 juin 2011 09:21

Re: Ven 10/02/2012 - Actualités

Message non lu par Denis »

XMo a écrit :Encore optimisé...
Allez! Tu peux faire mieux. Surtout si de nombreux items ont le même comportement. N’évalue qu'une seule fois ta condition, pour les autres, qu'ils recopient la valeur du premier !
Denis
Messages : 180
Enregistré le : jeu. 23 juin 2011 09:21

Re: Ven 10/02/2012 - Actualités

Message non lu par Denis »

TB tes icones grisées
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Re: Ven 10/02/2012 - Actualités

Message non lu par Xavier »

DMo a écrit :
XMo a écrit :Encore optimisé...
Allez! Tu peux faire mieux. Surtout si de nombreux items ont le même comportement. N’évalue qu'une seule fois ta condition, pour les autres, qu'ils recopient la valeur du premier !
Oui, il y a ça pour les boutons, qui copient leurs états sur les éléments de menu.
Si je généralise encore plus, je crains de devoir détricoter tout ça quand il y aura des bugs et qu'il faudra surcharger certains comportements et pas les autres. :mrgreen:
Répondre