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 :

Problème avec compo crée dynamiquement


Sujet :

Langage Delphi

  1. #1
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut Problème avec compo crée dynamiquement
    Bonjour tout le monde ....

    rien de plus simple mais je boude depuis plus d'une nuit !!!
    voilà, je voudrais créer des organigrammes à la demande, pour cela j'utilise un PageControl dont les tabSheet sont créés à partir d'une table, puis pour chaque TabSheet je dois créer son propre organigramme; pour cela j'utilise TdxOrgChart de DEVEXPRESS, mais à l’exécution j'ai une violation d'accès que j'arrive pas à déceler. voici le code en question :

    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
    begin
             DM.IBCTable_UNITE.First;
             while not(DM.IBCTable_UNITE.Eof) do
             begin
               with TRzTabSheet.Create(RzPageControl_ORG) do
               begin
                 Name := 'Org_' + DM.IBCTable_UNITE.FieldByName('CODE_UNITE').AsString;
                 Caption := DM.IBCTable_UNITE.FieldByName('NOM_UNITE').AsString;
                 Align := alClient;
                 PageControl := RzPageControl_ORG;
     
                 DM.IBCTable_UNITE.Next;
                 with _dxOrgChart.Create(Self) do // l'arrêt se produit à ce niveau avec une violation d'accès !
                 begin
                   Name := 'org_' +
                    Trim(DM.IBCTable_UNITE.FieldByName('CODE_UNITE').AsString);
                   Parent := PageControl;
                   Align := alTop;
                   TabOrder := 0;
                   Visible := True;
                 end;
               end
             end;
           end;
    ça ne doit pas être très méchant mais ça m'échappe ....

    Merci par avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 097
    Points : 41 081
    Points
    41 081
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je mettrais with TDXOrgChart.Create(Self) ....

  3. #3
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Bonjour Serge
    Citation Envoyé par SergioMaster Voir le message
    je mettrais with TDXOrgChart.Create(Self) ....
    que suis-je bête ?! merciiiiiiiiiiiiiiiiiiiiii

  4. #4
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Re

    Je relance la discussion car cette fois-ci j'ai un problème d'ordre plutôt logique que j'arrive pas à résoudre. Comme dit plus haut, le but étant de créer une PageControl et à l'intérieur vont se poser des TabSheets qui sont eux créés à partie d'une boucle qui balaye une table. Jusqu'ici tout va bien, à ce stade, je veux créer un organigramme par TabSheet mais à l'exécution de mon programme j'ai des organigrammes créés dans la PageControl mais pas dans les TabSheet comme je souhaite le faire.

    A priori, je dois déterminer TabSheet comme étant parent de dxOrgChart (organigramme) ce qui est tout à fait normal sauf que j'y arrive pas à le faire !

    mon code est le 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    procedure TfmMain.RzPageControl_GEXPLOITEPageChange(Sender: TObject);
     
      procedure Org_BUILD(Vue: TrZTabSheet ; code_org : string);
      begin
        with TdxOrgChart.Create(Self) do
        begin
          Name := 'org_' + Trim(code_org);
          Parent := Vue; // le parent doit être TabSheet 
          Align := alTop;
          TabOrder := 0;
          Visible := True;
        end;
      end;
     
    begin
      case RzPageControl_GEXPLOITE.ActivePageIndex of
      ....
       // Page organigramme
       5 : begin
             DM.IBCTable_UNITE.First;
             while not(DM.IBCTable_UNITE.Eof) do
             begin
               with TRzTabSheet.Create(RzPageControl_ORG) do
               begin
                 Name := 'Org_' + DM.IBCTable_UNITE.FieldByName('CODE_UNITE').AsString;
                 Caption := DM.IBCTable_UNITE.FieldByName('NOM_UNITE').AsString;
                 Align := alClient;
                 PageControl := RzPageControl_ORG;
                 Org_BUILD(??????, // que dois-je mettre ici ?
                           DM.IBCTable_UNITE.FieldByName('CODE_UNITE').AsString);
                DM.IBCTable_UNITE.Next;
               end
             end;
           end;
      end;
    end;
    merci encore.

  5. #5
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    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 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par Just-Soft Voir le message
    A priori, je dois déterminer TabSheet comme étant parent de dxOrgChart (organigramme) ce qui est tout à fait normal sauf que j'y arrive pas à le faire !
    Il faut passer par une variable temporaire qui sera transmise en paramètre à la procédure...

    La partie de votre code modifié :
    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
    procedure TfmMain.RzPageControl_GEXPLOITEPageChange(Sender: TObject);
    var
      ATabSheet: TRzTabSheet;
    //...
    //...
             while not(DM.IBCTable_UNITE.Eof) do
             begin
               //with TRzTabSheet.Create(RzPageControl_ORG) do
               ATabSheet := TRzTabSheet.Create(RzPageControl_ORG);
               with ATabSheet do
               begin
                 Name := 'Org_' + DM.IBCTable_UNITE.FieldByName('CODE_UNITE').AsString;
                 Caption := DM.IBCTable_UNITE.FieldByName('NOM_UNITE').AsString;
                 Align := alClient;
                 PageControl := RzPageControl_ORG;
                 //Org_BUILD(??????, // que dois-je mettre ici ?
                 Org_BUILD(ATabSheet,
                           DM.IBCTable_UNITE.FieldByName('CODE_UNITE').AsString);
                DM.IBCTable_UNITE.Next;
               end
    //...
    On peut même optimiser un peu le code dans ce cas là : du fait de la portée de la variable introduite dans le code, on peut supprimer le paramètre Vue et le remplacer par ATabSheet là où il est utilisé.

  6. #6
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Bonjour,
    Il faut passer par une variable temporaire qui sera transmise en paramètre à la procédure...

    On peut même optimiser un peu le code dans ce cas là : du fait de la portée de la variable introduite dans le code, on peut supprimer le paramètre Vue et le remplacer par ATabSheet là où il est utilisé.
    très bien vue Ph. B .... ça avance merci.

Discussions similaires

  1. probléme avec ma liste dynamique
    Par kebson dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 25/07/2007, 11h23
  2. Problème avec les checkbox dynamiques
    Par 20304995 dans le forum Langage
    Réponses: 2
    Dernier message: 17/05/2007, 18h00
  3. Réponses: 6
    Dernier message: 20/02/2007, 17h00
  4. Problème avec les libraires dynamiques
    Par Harzoglups dans le forum C
    Réponses: 3
    Dernier message: 17/01/2006, 15h21
  5. Problème avec la RTL dynamique
    Par lamojuli dans le forum C++Builder
    Réponses: 5
    Dernier message: 03/11/2004, 14h45

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