IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

TStringGrid sélectionner une ligne


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 422
    Par défaut TStringGrid sélectionner une ligne
    bonjour,

    la question a du être posée 10000 fois mais je n'ai pas trouver la réponse.
    Comment récupérer le numéro de la ligne sélectionnée dans un TStringGrird

    j'ai écrit ceci mais je récupère toujours le numéro de la première ligne ?? (même si je sélectionne une autre ligne)

    merci et désolé de poser des question ausi "simple" mais je débute

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Par défaut
    Ca devrait marcher !

    Mais les éléments que tu donnes sont faibles, alors...

  3. #3
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Non, c'est bien comme ça que l'on fait...

    Sinon -->

    Et ta ligne, tu l'as écrit où ? Dans quel évènement, et tu en fais quoi avec ?

  4. #4
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 422
    Par défaut
    je vous donne les procédures concernées.
    La variable est déclarée dans public car je récupère la valeur dans une autre feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
      public
        { Déclarations publiques }
     var indexlig: integer;
      end;
     
    var
      FDetail: TFDetail;
     
    implementation
     
    uses Modif;
     
    {$R *.dfm}
     
    procedure TFDetail.FormCreate(Sender: TObject);
     var  enregvin: vin;
    adr: string;
    fichier: file of vin;
    col,i,lig : integer;
    index:array[0..17,0..200] of integer;
    ta:array[0..17] of integer;
    begin
    adr:= ExtractFilePath(Application.ExeName) + 'FichCave.vin';
     
    grille.ColWidths[0]:=105;grille.Cells[0,0]:='APPELATION';
    grille.ColWidths[1]:=105;grille.Cells[1,0]:='VIGNOBLE';
    grille.ColWidths[2]:=105;grille.Cells[2,0]:='PRODUCTEUR';
    grille.ColWidths[3]:=50; grille.Cells[3,0]:='TYPE';
    grille.ColWidths[4]:=80;grille.Cells[4,0]:='Date achat';
    grille.ColWidths[5]:=50;grille.Cells[5,0]:='PRIX achat';
    grille.ColWidths[6]:=30;grille.Cells[6,0]:='QT';
    grille.ColWidths[7]:=80;grille.Cells[7,0]:='MILLESIME';
    grille.ColWidths[8]:=50;grille.Cells[8,0]:='A CONSO';
    grille.ColWidths[9]:=50;grille.Cells[9,0]:='PRIX actuel';
       origine.Text:=Cave.indexorigine;
       if FileExists(adr) then
       begin
                 AssignFile(fichier,adr);
                 Reset(fichier);
     
     
       lig:=0;
       while not eof(fichier) do
         begin
         read(fichier,enregvin);
              if enregvin.origine=Cave.indexorigine then
                 begin
                   lig:=lig+1;col:=0;
                   grille.Cells[col,lig]:=enregvin.appelation; col:=col+1;
                   grille.Cells[col,lig]:=enregvin.vignoble; col:=col+1;
                 end;
           end;
       end;
     
     indexlig:=grille.Row;
     test.Text:=IntToStr(indexlig);
     end;
    procedure TFDetail.BTmodifClick(Sender: TObject);
    begin
    indexlig:=grille.row;
    FModif.show;
    end;

  5. #5
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    Citation Envoyé par michel71
    je vous donne les procédures concernées.
    La variable est déclarée dans public car je récupère la valeur dans une autre feuille
    tu peut faire simple, pour lire la ligne au lieu d'un variable,
    showmessage(inttostr(FDetai.grille.row));
    où ce soit ton appel pourvu que tu ajoute le nom de votre unite dans uses

  6. #6
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Le problème est vraisemblablement ailleurs (grille.row doit bien donner l'élément du tableau sur lequel on a cliqué auparavant).

    Sinon, pour une bonne pratique de la programmation, "indexlig" devrait être une variable de la forme.

  7. #7
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 422
    Par défaut
    Bon j'ai réussi à afficher le numéro de ligne en mettant "FormCreate" dans la propriété évènement de la grille. Quand je clique sur une ligne le numéro s'affiche bien dans mon TEdit de test qui se trouve sur la fiche ou se situe la grille mais dès que je passe sur la fiche suivante je récupère le numéro de la ligne sélectionnée par défaut (la ligne 1)

    Un débutant un peu lasse

    merci

  8. #8
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Citation Envoyé par michel71
    Bon j'ai réussi à afficher le numéro de ligne en mettant "FormCreate" dans la propriété évènement de la grille. Quand je clique sur une ligne le numéro s'affiche bien dans mon TEdit de test qui se trouve sur la fiche ou se situe la grille mais dès que je passe sur la fiche suivante je récupère le numéro de la ligne sélectionnée par défaut (la ligne 1)

    Un débutant un peu lasse

    merci
    mais pourquoi as-tu tout mis dans le OnCreate de ta fiche ?
    OnCreate est un évènement qui n'est déclenché qu'une seule fois, et comme son nom l'indique, quand la fiche est créée (elle ne l'est qu'une seule fois, puis elle est détruite quand tu quittes ton programme, tu me suis ?)
    Du coup, à chaque fois tu récupères le numéro de la ligne de ta grille au moment ou ta fiche est créée, point barre.

    Mets ton code de récupération de la ligne sélectionnée dans l'évènement OnSelectCell (qui signifie en français : "moment où une cellule est sélectionnée") du composant grille : comme ça, à chaque fois que tu cliqueras sur une cellule de ta grille (la ligne sélectionnée change à ce moment, d'ac ?), tu récupèreras à coup sur le numéro de la ligne en cours...

    En fait la question que tu dois te poser, c'est : "mais comment ça marche les évènements ? ça se déclenche comment ? A quel moment ? Lequel dois-je choisir pour y mettre tel ou tel code ?"

    Ne sois pas lassé, tu y es presque... La compréhension des évènements, c'est le cap le plus dur à passer, très difficile à expliquer tellement c'est simple (), mais une fois que tu auras pigé le mécanisme, tu en feras ce que tu veux (ou presque), de ton Delphi...
    Allez courage, accroches toi, ça vaut le coup de persévérer.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 46
    Par défaut
    Et si tu mettais ta variable indexLigne dans l'évènement SelectCell de ta grille pour récupérer le paramètre ARow qui donne le n° de la ligne selectionnée ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [HTML] Sélectionner une ligne dans un tableau en html
    Par jehlg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 16/06/2008, 11h55
  2. Sélectionner une ligne d'un sous-formulaire
    Par yoyo30 dans le forum Access
    Réponses: 3
    Dernier message: 16/09/2005, 10h51
  3. Comment sélectionner une ligne dans une TStringGrid ?
    Par Ben_Le_Cool dans le forum Composants VCL
    Réponses: 11
    Dernier message: 22/08/2005, 12h38
  4. [DB2] Sélectionner une ligne dans une SP
    Par Fatah93 dans le forum DB2
    Réponses: 4
    Dernier message: 25/05/2005, 14h52
  5. Sélectionner une ligne dans une DBGrid
    Par RBIK dans le forum Bases de données
    Réponses: 13
    Dernier message: 01/07/2004, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo