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

Composants VCL Delphi Discussion :

creer et utiliser le composant stringgrid pendant l'execution


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 17
    Par défaut creer et utiliser le composant stringgrid pendant l'execution
    j'ai pu créer un composant stringgrid pendant l’exécution en utilisant le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for i:=1 to nflux do
     With Tstringgrid.Create(formul.Scrollbox2) Do
      Begin
      name:='stringgrid'+inttostr(i+2);
      Parent := formul.Scrollbox2;
      colcount:=2;
      rowcount:=sommet+1;
      Cells[0,0]:='Flot N° '+inttostr(i);
      Options:=Options+[goEditing];
      width:=160;
      for j:=1 to sommet do Cells[0,j]:=chr(64+j);
      left:=(i-1)*164;
     
      End;
    mais quand je veux l'utiliser pour un affichage j'ai pas pu le faire et voici le code qui a declenché l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if k=1 then equation:=equation+'='+Scrollbox2.stringgrid3.cell[2,i]; 
     if k=2 then equation:=equation+'='+Scrollbox2.stringgrid4.cell[2,i];
     if k=3 then equation:=equation+'='+scrollbox2.stringgrid5.cell[2,i];
    l'erreur est :
    identificateur non déclaré: 'stringgrid3'
    et la même chose pour les autres stringgrid4,stringgrid5

    k est une valeur connu et equation est une chaine de caractères qui permet d'afficher l’équation proprement dite.

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 940
    Billets dans le blog
    6
    Par défaut
    Il n'est pas possible de nommer dans le code de cette façon : le compilateur ne sait pas combien de grilles seront crées avant l'exécution et ne peut les gérer comme des composants déposés en conception sur une fiche.

    Par contre, on peut en création les ajouter à un tableau ou à une liste de grilles.

    On peut également rechercher les composants dont le Owner le permet par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyObject := TMyComponent( HisOwner.FindComponent('HisName') );
    mais c'est plus long, surtout si ce code doit se répéter souvent.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    La liste de grille proposée par tourlourou semble une solution simple et pratique

  4. #4
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 17
    Par défaut
    mais comment on peut en création les ajouter à un tableau ou à une liste de grilles???

  5. #5
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    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
     
    var
      Grilles: array of TStringGrid;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     
      SetLength(Grilles, 4);
      Grilles[0] := TStringGrid.Create(Self);
      Grilles[0].Parent := Self;
     
      Grilles[1] := TStringGrid.Create(Self);
      Grilles[1].Parent := Self;
      Grilles[1].Left := Grilles[0].Left + Grilles[0].Width + 25;
     
      Grilles[2] := TStringGrid.Create(Self);
      Grilles[2].Parent := Self;
      Grilles[2].Top := Grilles[0].Top + Grilles[0].Height + 25;
     
      Grilles[3] := TStringGrid.Create(Self);
      Grilles[3].Parent := Self;
      Grilles[3].Left := Grilles[2].Left + Grilles[2].Width + 25;
      Grilles[3].Top := Grilles[1].Top + Grilles[1].Height + 25;
     
      Grilles[0].Cells[2, 2] := 'Grille0';
      Grilles[1].Cells[2, 2] := 'Grille1';
      Grilles[2].Cells[2, 2] := 'Grille2';
      Grilles[3].Cells[2, 2] := 'Grille3';
     
    end;

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 940
    Billets dans le blog
    6
    Par défaut
    Je ne sais pas ce que tu appelles "en création" : si c'est dynamiquement (= à l'exécution), cf. exemple ci-dessous
    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
    var
      FluxGrids: array of TStringGrid;
    begin
      SetLength(FluxGrids, nflux);
      for i:=1 to nflux 
      do begin
        FluxGrids[i-1]:=TStringGrid.Create(nil);  // i-1 car tableaux dynamiques zero-based
        // pas besoin de passer la ScrollBox comme Owner : référence dans le tableau => on peut libérer manuellement
        with FluxGrids[i-1] do begin
          name:='stringgrid'+inttostr(i+2);
          Parent := formul.Scrollbox2;
          colcount:=2;
          //...
        end;
      end;
    Si c'est en conception (Design Time), ce n'est pas possible : il faut en début d'exécution (FormCreate, par exemple) parcourir les parents et chercher leurs composants avec un FindComponent pour les ajouter au tableau.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 17
    Par défaut
    J'ai pas de probleme pour la creation des grilles (pour les flux) mais j'ai un probleme pour les utiliser
    c.a.d :
    j'ai pu les creer selon le nombre de flux (variable nflux) "pendant l'execution' car la variable nflux est saisie lors de l'execution
    mais je ne peut pas les utiliser (je ne peut pas acceder a ces noms par exemple pour effectuer un autre traitement

  8. #8
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 940
    Billets dans le blog
    6
    Par défaut
    Donc, créées selon le code précédent, on utilisera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if k in [1..3] then equation:=equation+'='+FluxGrid[k].cell[2,i];
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

Discussions similaires

  1. Composant StringGrid
    Par jackvpt dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/04/2005, 19h32
  2. Utilisation du composant TDBImage
    Par kkv dans le forum Bases de données
    Réponses: 4
    Dernier message: 10/03/2005, 17h41
  3. Utilisation d'une StringGrid
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/09/2004, 15h27
  4. Creer et utiliser une librairie externe à l'exécutable
    Par multani dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 06/11/2003, 10h11
  5. [][Timer] Créer un Timer sans utiliser le composant
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 01/10/2003, 11h04

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