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

Langage Delphi Discussion :

Comment manipuler un stringGrid dans un Tabsheet active ?


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 14
    Points
    14
    Par défaut Comment manipuler un stringGrid dans un Tabsheet active ?
    Bonjour,
    Je créé plusieurs Tabsheet dans un PageControl, chaque Tabsheet contient un seul StringGrid.
    Je veut créer une bouton qui imprime le StringGrid inclue dans le tabsheet active (c à d) le tabsheet ouvert par l'utilisateur seulement.
    Comment faire appel a ce stringGrid ?
    J'ai essayé de faire ça, mais ça ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pagecontrol1.ActivePage.Components[0] As TStringGrid;

  2. #2
    Membre actif
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Décembre 2014
    Messages : 107
    Points : 237
    Points
    237
    Par défaut
    Salut JeaDeb

    Y a un moyen rapide (pas hyper propre mais qui marche bien).
    Disons que tu aies dans tes tabCtrl les stringgrid gr0, gr1, gr2, gr3, ...
    1 - dans la partie private de ta form tu ajoutes un tStringgrid supplémentaire que tu nommes ActiveGrid
    2 - tu utilise l'évênement OnChange de ton pagecontrol et tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.PageControl1Change(Sender: TObject);
    begin
       case PageControl1.ActivePageIndex of
          0: ActiveGrid := gr1;
          1: ActiveGrid := gr1;
          3: ActiveGrid:= gr3;
        end;
    end;
    et dans ton bouton tu auras toujours ActiveGrid qui pointera sur la bonne grid, tu pourras imprimer, modifier, ...
    Y a mieux, mais c'est plus cher.
    Clair ?
    solilog

  3. #3
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 398
    Points : 3 165
    Points
    3 165
    Par défaut
    Bonjour,

    sinon tu peux utiliser la propriété Tag des TStringGrid. tu mets le Tag de chaque grille égale au numéro de l'onglet : 0, 1, ... puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.BitBtn1Click(Sender: TObject);
    Var
        i     : Integer    ;
    Begin
       for i:=0 to ComponentCount-1 do
          If Components[i] is TStringGrid then
             Begin
                If (Components[i] as TStringGrid).Tag = PageControl1.ActivePageIndex Then
                           ...  impression de la grille de l'onglet 
     
            End ;
    End;
    A+
    Charly

  4. #4
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Points : 5 918
    Points
    5 918
    Par défaut
    Citation Envoyé par JeaDeb Voir le message
    Bonjour,
    Je créé plusieurs Tabsheet dans un PageControl, chaque Tabsheet contient un seul StringGrid.
    Je veut créer une bouton qui imprime le StringGrid inclue dans le tabsheet active (c à d) le tabsheet ouvert par l'utilisateur seulement.
    Comment faire appel a ce stringGrid ?
    J'ai essayé de faire ça, mais ça ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pagecontrol1.ActivePage.Components[0] As TStringGrid;
    Car :
    1. un composant n'est pas forcément un contrôle visuel (ou fenêtré).
    2. ce n'est pas forcément le 1° élément de la liste.


    Il faut :
    1. parcourir la liste des contrôles (à ne pas confondre avec composants car je le rappelle cette dernière inclut composants visuels -ou fenêtrés- et non visuels)
    2. regarder si le type correspond (on s'arrête dans votre cas au 1° trouvé)
    3. renvoyer le contrôle

    Cela donne (à vérifier sous Delphi)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var
      i: integer;
      MaStringGridAImprimer: TStringGrid;
    //...
      for i := 0 to Pagecontrol1.ActivePage.ControlCount - 1 do // à ne pas confondre avec ComponentCount
        if Pagecontrol1.ActivePage.Controls[i] is TStringGrid then // à ne pas confondre avec Components[i]
        begin
          MaStringGridAImprimer := TStringGrid(Pagecontrol1.ActivePage.Controls[i]); // Typer car Controls[i] est du type générique TWinControl
          Break; 
        end;

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    Je vous remercie infiniment, ça marche !

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

Discussions similaires

  1. [WS 2003] comment remplir attribut uid dans classe user Active directory
    Par ouadie99 dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 13/08/2009, 10h23
  2. Comment Manipuler des objets dans une liste de type TList ?
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 1
    Dernier message: 02/11/2006, 15h40
  3. Réponses: 2
    Dernier message: 15/10/2005, 18h47
  4. Comment dessiner un ComboBox dans un StringGrid ?
    Par gilles641 dans le forum Composants VCL
    Réponses: 8
    Dernier message: 30/07/2005, 15h19
  5. Réponses: 8
    Dernier message: 14/03/2005, 21h43

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