Bonjour,
Je veux filtrer une listview mais uniquement sur l'élément text de l'item or cela ne semble pas être le comportement standard.
Dans mon cas , j'ai une liste view avec en Text le nom du client et en Detail Ville+Pays (ItemAppearance = ImageListItmeBottonDetail)
j'ai mis le code suivant dans un TEdit (NomSearch) de recherche
problème X de la fonction semble être aussi bien la valeur liée (via livebindings) à Item.Text que à Item.Detail
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TMainClients.NomSearchChange(Sender: TObject); begin if Length(NomSearch.Text)>0 then begin Listview1.Items.Filter:=function(X: string): Boolean begin Result:= X.StartsWith(NomSearch.Text,true); end; end else Listview1.Items.Filter:=nil; end;
est-il possible de faire une distinction ? C'est peut-être ma manière de faire le filtre qui déconne ?
Note : pour l'heure, je peux toujours passer par caractère invisible (espace, espace insécable ...) en début de la partie détail par exemple mais je suis étonné qu'il n'y ait pas une solution plus 'simple', genre une propriété non trouvée. Mais si je voulais quelque chose comme "le client dont le nom contient" (posex) au lieu de "le client dont le nom commence par" (startswith) je serais marron![]()







Répondre avec citation





, du coup peut être est-il possible de l'overrider
que j'étais en allant titiller le SQLLocal, le Filter de la FDMemTable convient très bien à mon projet, en modifiant quelque peu la structure de ma table mémoire (pour la future recherche Ville,Code Postal,Pays du second TEdit) je vais m'en sortir
si toutefois quelqu'un sait comment surclasser la fonction OnDoFilterItem ou une manière simple d'utiliser TSearchBox je suis toujours preneur

Partager