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

PhilLu 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention - 8 nov. 2009 à 17:53 - Dernière réponse : PhilLu 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention
- 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
PhilLu 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention - 9 nov. 2009 à 18:16
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de PhilLu
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 8 nov. 2009 à 18:30
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
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 8 nov. 2009 à 18:38
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
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 8 nov. 2009 à 18:40
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
PhilLu 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention - 8 nov. 2009 à 20:58
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
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 9 nov. 2009 à 09:31
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
ThWilliam 424 Messages postés mardi 3 janvier 2006Date d'inscription 26 novembre 2013 Dernière intervention - 9 nov. 2009 à 09:55
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
ThWilliam 424 Messages postés mardi 3 janvier 2006Date d'inscription 26 novembre 2013 Dernière intervention - 9 nov. 2009 à 09:58
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.