Dim 26/02/2012 - Actualités

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

Dim 26/02/2012 - Actualités

Message non lu par Xavier »

Dim 26/02/2012 - Actualités


11:50

Le dernier bug référencé dans l'outil Contacts était (bien entendu) le plus difficile : lors du déplacement d'un Contact dans un même dossier (fonctions Monter et Descendre), la sélection résultante n'était pas cohérente.
Là où ça se complique, c'est que ce bug apparaissait uniquement si l'opération était effectuée au clavier, le résultat de ces fonctions étant correct quand appelées via le bouton ou le menu contextuel. :roll:

Après analyse, le problème semblait lié à l'utilisation des touches Haut et Bas, un peu comme si le ListView les réinterprétait, mais de façon incorrecte.
Même un "vidage" artificiel du buffer était sans effet :

Code : Tout sélectionner

PeekMessage(Msg, 0, WM_CHAR, WM_CHAR, PM_REMOVE);
Après deux heures de debugs inefficaces, ces raccourcis-clavier ont été désactivés. :(


Reprise des tests, et détection d'un bug similaire à la fermeture d'un Contact si effectuée sur une Information, toujours au clavier, mais cette fois avec d'autres touches ("+" et "-").

Après recherche sur Internet, il s'avère que je n'utilisais que la propriété Selected du TListView, et que d'autres développeurs utilisaient Selected et ItemFocused ! (Je le saurai pour les prochaines fois...)
Chaque revalorisation de Selected est désormais suivi d'un forçage du focus sur la sélection :

Code : Tout sélectionner

Contacts_List.ItemFocused := Contacts_List.Selected;
L'effet de bord des flèches a été corrigé par un reset forçé via Key := 0 :

Code : Tout sélectionner

		// [Ctrl + Haut]
		if	((Shift = [ssCtrl]) and (Key = VK_Up))
		then	begin
			if	Contacts_Up_Button.Enabled
			then	Contacts_Manage(Contacts_Up_Button);
			Key := 0;
			end;
		// [Ctrl + Bas]
		if	((Shift = [ssCtrl]) and (Key = VK_Down))
		then	begin
			if	Contacts_Down_Button.Enabled
			then	Contacts_Manage(Contacts_Down_Button);
			Key := 0;
			end;
L'Alpha 03 se rapproche... :)
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Dim 26/02/2012 - Actualités

Message non lu par Xavier »

14:00

La sélection multiple de plusieurs Contacts a été désactivée, car elle empêche le bon fonctionnement de la copie en mémoire multiple, l'usage de la touche Ctrl n'étant alors plus détectée par l'application.

Ainsi donc :
  • Pour déplacer plusieurs Contacts vers un autre dossier, il faudra les déplacer un par un. Cela ne devrait pas arriver trop souvent et pourra être accéléré par l'utilisation de drag-and-drop.
  • La copie d'adresses e-mails multiple utilisera la touche Ctrl.
Répondre