toupil34
Messages postés11Date d'inscriptionlundi 26 janvier 2009StatutMembreDernière intervention 6 mars 2009
-
24 févr. 2009 à 15:18
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
6 mars 2009 à 14:08
bonjour a tous
est il possible de faire une recherche partielle dans un listview par l'intermediaire d'un edit,
end;
je voudrais maintenant (a l'aide d'un panel et d'un edit),quand je tape la lettre 'g'dans l'edit,que la listview me mette en surbrillance le nom commencant par la lettre 'g'.
j'espere que cela est asses comprhensible.
merci
toupil34
Messages postés11Date d'inscriptionlundi 26 janvier 2009StatutMembreDernière intervention 6 mars 2009 26 févr. 2009 à 08:52
merci pour le lien (exemple tres interessant,(desolé j'ai du mal m'exprimer)en fait je voudrais simplement que lorsque je tappe 'g' dans l'edit, le listview me selectionne le nom commencant par la lettre 'g'sans mettre la cllule en couleur (recherche sur le 1° item)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Var I : Integer;
begin
For I := 1 To Lvaffichage.Items.Count Do
Begin
If Copy(LowerCase(Lvaffichage.Items[I-1].caption),1,Length(LowerCase(Editrecherche.Text)))
= LowerCase(Editrecherche.Text)
Then Begin
Lvaffichage.ItemIndex := I-1;
Break;
End;
End;
end;
mais il ne fonctionne pas (rien ne se passe)
quelqu'un aurait 'il une solution
merci
for i := Low(Names) to High(Names) do
begin
ListItem := Items.Add;
ListItem.Caption := Names[i, 0];
ListItem.SubItems.Add(Names[i, 1]);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
for i := 1 to ListView.Items.Count do
begin
if Copy(LowerCase(ListView.Items[i - 1].caption), 1, Length(LowerCase(EditRecherche.Text)))
= LowerCase(Editrecherche.Text) then
begin
ListView.ItemIndex := i - 1;
Break;
end;
end;
end;
end.
Tape Bunny dans ton edit et clique et tu verras qu'il passe sur le break
Maintenant, il faut lui dire ce que tu veux faire à ce moment..
(j'aurais mis UpperCase..)
Je sens que tu voudrais faire une recherche incrémentale ce qui est très difficile à mettre en place dans ce type de composant..
toupil34
Messages postés11Date d'inscriptionlundi 26 janvier 2009StatutMembreDernière intervention 6 mars 2009 26 févr. 2009 à 16:37
j'ai tester ton code qui fonctionne tres bien a la creation de la listview mais
j'ai toujours le meme probleme pour la recherche
je joint un exemple qui sera plus explicite(du moins j'espere)
//+++++composants utlises++++
//listview
//edit1 (recherche)
//edit2(taper nom a entrer dans la listview)
//boutton1(ajouter dans la listview)
type
TForm1 = class(TForm)
Edit1: TEdit;
ListView1: TListView;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//ajoute les elements dans la listview
procedure TForm1.Button1Click(Sender: TObject);
var listajout: tlistitem;
begin
listajout:=listview1.Items.Add;
listajout.Caption:=edit2.Text;
edit2.Text:='';
end;
//recherche (tape'r' dans edit1 doit selectionner les noms correspondants dans la listview)
procedure TForm1.Edit1Change(Sender: TObject);
begin
listview1.ItemIndex:=sendmessage(listview1.Handle,lb_findstring,-1,integer(edit1.Text));
end;
end.
cela fonctionne nickel avec un listbox,mais pas avec une listview (quand je tape la lettre dans l'edit1 il ne me selectionne pas les noms correspondants dans la listview
serait ce un probleme de propriete de la listview?