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

Messages postés
249
Date d'inscription
lundi 9 novembre 2009
Dernière intervention
6 mai 2018
- - Dernière réponse : PhilLu
Messages postés
249
Date d'inscription
lundi 9 novembre 2009
Dernière intervention
6 mai 2018
- 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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
249
Date d'inscription
lundi 9 novembre 2009
Dernière intervention
6 mai 2018
3
Merci
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

Merci PhilLu 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de PhilLu
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
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
Commenter la réponse de cs_cantador
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
0
Merci
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.
Commenter la réponse de cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
0
Merci
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.
Commenter la réponse de cs_Delphiprog
Messages postés
249
Date d'inscription
lundi 9 novembre 2009
Dernière intervention
6 mai 2018
0
Merci
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;
Commenter la réponse de PhilLu
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
@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
Commenter la réponse de cs_cantador
Messages postés
424
Date d'inscription
mardi 3 janvier 2006
Dernière intervention
26 novembre 2013
0
Merci
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
Commenter la réponse de ThWilliam
Messages postés
424
Date d'inscription
mardi 3 janvier 2006
Dernière intervention
26 novembre 2013
0
Merci
@Cantador : je n'ai pas vu ton comment avant de poster le mien. Tes remarques sont très pertinentes.

Thierry
Commenter la réponse de ThWilliam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.