Scroller dans un stringgrid pour afficher la ligne recherchée (contenu de la 1èr

Résolu
PhilLu Messages postés 251 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 mai 2021 - 8 nov. 2009 à 17:53
PhilLu Messages postés 251 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 mai 2021 - 9 nov. 2009 à 18:16
Salut,
Je souhaite faire afficher (scroller) une ligne recherchée dans un stringgrid, par exemple sur base du contenu de la première cellule)
Je tourne en round!
Merci,
PhilLu

8 réponses

PhilLu Messages postés 251 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 mai 2021
9 nov. 2009 à 18:16
Super pour vos explications!!!
Ce genre de détails ne se trouvent dans aucuns bouquins,
heureusement qu'il existe des forum
et je comprend qu'avant internet l'informatique était réservée à quelques uns seulement (qui devaient se téléphoner sans doute???)
+A
PhilLu
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 nov. 2009 à 18:30
bonsoir,
humhh, heu..
tu souhaites déclencher une recherche de chaîne dans tout le stringgrid avec le contenu de la première cellule et si une collision se produit alors la ligne qui répond à cette condition doit s'afficher à l'écran.

C'est bien ça ?

cantador
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
8 nov. 2009 à 18:38
Salut,

Exemple de code reprenant le contenu d'un TEdit nommé Edit1 et effectuant la recherche dans la première colonne qui ne faiy pas partie des colonnes fixes :

procedure TForm6.Button1Click(Sender: TObject);
var
  I: Integer;
  found: boolean;
begin
  found := false;
  with StringGrid1 do
    for I := 0 to RowCount - 1 do
    begin
      if Cells[FixedCols1, i] = Edit1.Text then
      begin
         TopRow := i;
         found := true;
         break;
      end;
    end;
  if found then
    ShowMessageFmt('%s trouvé à la ligne %d', [Edit1.Text, i])
  else
    ShowMessageFmt('%s non trouvé', [Edit1.Text]);
end;


8000 Lévriers 'galgos' par an sont torturés et massacrés en Espagne
May Delphi be with you

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
8 nov. 2009 à 18:40
Arf, ce n'est pas FixedCols1 qu'il faut lire mais FixedCols, bien sûr...

8000 Lévriers 'galgos' par an sont torturés et massacrés en Espagne
May Delphi be with you

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PhilLu Messages postés 251 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 mai 2021
8 nov. 2009 à 20:58
Super!
Merci je commençais à fatiguer!!!
Mais pourquoi cela ne fonctionne pas comme ça:
(0 remplace FixedCols1 puisque je compare la colonne 0???)

with StringGrid1 do
for I := 0 to RowCount - 1 do
begin
if Cells[0, i] = Edit1.Text then
begin
TopRow := i;
found := true;
break;
end;
end;
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 nov. 2009 à 09:31
@PhilLU:
Si fixedRows est à 1 alors ton code ne peut pas mettre la cellule trouvée en toprow..
En revanche, si fixedrows est à zéro alors elle se place tout en haut.

Autre évènement, tu as remarqué que la ligne trouvée se place en haut mais les autres disparaissent si il s'agit d'une cellule <> [0,0]
et cette recherche ne s'articule que dans la première colonne..

Il aurait été préférable (mais comme on ne sait pas exactement ce que tu veux faire..)
que cette recherche s'effectue sur l'ensemble du grid et affiche le résulat trouvé au dessus de ce dernier par exemple.

cantador
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
9 nov. 2009 à 09:55
Salut,

Il n'y a pas de raison que cela ne marche pas.

Une remarque :
"if Cells[0, i] = Edit1.Text then..." : réclame une correspondance exacte entre Cells[] et Edit1.Text -> il y a distinction entre majuscules et minuscules.

Ceci ne tient pas compte de la casse :

if AnsiCompareText(Cells[0, i], Edit1.Text) = 0 then...

A +
Thierry
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
9 nov. 2009 à 09:58
@Cantador : je n'ai pas vu ton comment avant de poster le mien. Tes remarques sont très pertinentes.

Thierry
0
Rejoignez-nous