PDA

View Full Version : Listview 2


Alain Carignan
06-06-2008, 05:01 AM
J'aimerai savoir comment changer visuellement la sélection d'une Listview. La commande ListView_setsel ne semble n'avoir aucun effet.
Merci d'avance.

kornalius
06-08-2008, 09:12 PM
Utilisez ListView_Select, elle fonctionne.

Alain Carignan
06-09-2008, 01:40 PM
Non, malheureusement cet commande ne fait rien au visuel.

kornalius
06-09-2008, 06:01 PM
Changez la function dans swapi.ppl par celle-ci:

proc ListView_Select(ListView$, index$, state$)
local(lvItem$);
struct(lvItem$, LVITEM);
lvItem.Mask$ = LVIF_STATE;
lvitem.State$ = state$;
lvItem.StateMask$ = LVIS_SELECTED;
lvItem.iItem$ = int(index$);
SendMessage(ListView$, LVM_SETITEMSTATE, int(index$), &lvItem$);
end;

Alain Carignan
06-09-2008, 10:12 PM
Cette procédure ne fonctionne pas non plus. à moins que ce soit dû au paramètre state$. J'aimerai avoir un exemple d'appel de la procédure. J'ai essayer true and false. J'ai rien trouvé dans les définitions de Common.ppl.

kornalius
06-09-2008, 10:35 PM
Celle-ci fonctionne:

proc ListView_Select(ListView$, index$, state$)
local(lvItem$);
struct(lvItem$, LVITEM);
lvItem.Mask$ = LVIF_STATE;
if (state$)
lvitem.State$ = LVIS_SELECTED;
end;
lvItem.StateMask$ = LVIS_SELECTED;
SendMessage(ListView$, LVM_SETITEMSTATE, int(index$), &lvItem$);
end;

Alain Carignan
06-10-2008, 01:05 AM
Cette procédure sélectionne bien l'élément. Mais ne rend pas l'élément sélectionné visible. S'il n'est pas dans la plage visible de la liste view.

kornalius
06-10-2008, 02:06 AM
C'est normal. Il faut que le focus soit sur le ListView sinon utilisez l'option LVS_SHOWSELALWAYS quand vous créez votre control.

Alain Carignan
06-11-2008, 03:31 AM
J'ai essayé vos deux suggestions mais cela ne change rien.