Salut à tous.
J'ai sur une form un listview dans lequel je souhaite faire une recherche, pour donner la possibilité à l'utilisateur de continuer la recherche si une réponse à été trouvé, voilà ce que j'ai écris :
procedure TForm1.Chercherunfichier1Click(Sender: TObject);
var
FichierAChercher:string;
IndexListe:integer;
begin
if ListVw_DetailsFichiers.Items.Count=0 then
exit;
FichierAChercher:=InputBox('Chercher un fichier','Entrez le nom du fichier à chercher','');
for IndexListe:=0 to (ListVw_DetailsFichiers.Items.Count-1) do
begin
if AnsiContainsText(ListVw_DetailsFichiers.Items[IndexListe].Caption,FichierAChercher) then
begin
ListVw_DetailsFichiers.Selected:=ListVw_DetailsFichiers.Items[IndexListe];
ListVw_DetailsFichiers.Selected.MakeVisible(False);
if MessageDlg('Un fichier à été trouvé, voulez-vous poursuivre la recherche ?',mtConfirmation,[mbYes,MbNo],0)=mrNo then
break;
end;
end;
end;
Théoriquement, quand on a trouvé un élément correspondant dans la liste, on le selectionne, on le rend visible et on affiche une boite de dialogue pour demander si on veut continuer la recherche.
Le soucis c'est qu'apparement les deux lignes qui selectionnent l'element dans le listview et le rendent visible ne semblent pas s'executer (juste avant l'appel à MessageDlg dans mon code)

Pourtant si je retire cet appel à MessageDlg et que je passe directement à "break", tout fonctionne normalement ...
Dans ce cas, l'utilisateur perds la possibilité de chercher plusieurs occurences du mots, ce qui est l'inverse de ce que je voudrais faire

Quelqu'un aurait un idée ?