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 :

Erreur à l'exécution "un composant nommé InternalMenuStyler existe déjà"


Sujet :

Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut Erreur à l'exécution "un composant nommé InternalMenuStyler existe déjà"
    Bonjour à tous

    J'ai une form avec 3 TTabSheet. Sur le premier, aucun problème. Sur le second, j'ai cette erreur :





    Elle intervient très précisément lorsque je cherche à mettre un bouton à Enabled := False ou bien Btn_X.SetFocus, ou bien même lorsque je clique sur le bouton Quitter (lequel ne fait partie d'aucun TabSheet).

    Dans l'unité "Affichages.pas", j'ai cette routine, appelée par l'événement OnChange du JvPageControl :

    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
     
    Procedure Gerer_Changement_TabSheet;
    Var
      TabSheet_Actif : integer;
     
    begin
     
      TabSheet_Actif := Form1.JvPageControl1.ActivePageIndex;
     
      case TabSheet_Actif of
        0 : // Sauvegarde
          begin
            ITF_Entree;
            Form1.Btn_F_Temp.Enabled := True;
            Form1.Btn_F_Temp.Visible := True;
          end;
     
        1 : // Restauration
          begin
            Desactiver_Ts_Boutons_Sur_TabSheet_Svgrd;
            Form1.Btn_F_Temp.Enabled := False;
            Aff_Profil_Restaure;
            Form1.TabSheet_Svgrd.PageControl.ActivePage := Form1.TabSheet_Rest;
          end;
     
        2 : // Outils
          begin
                // Rien pour l'instant 
          end;
     
      end;
     
    end;
    Pour information, la procédure ITF_Entree :

    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 Activer_Ts_Boutons_Sur_TabSheet_Svgrd;
    Var
      i : integer;
      Tab_GroupBox : array of TWinControl;
      Nb_GroupBox : integer;
      Idx_Tab : integer;
     
    begin
      Form1.TabSheet_Svgrd.PageControl.ActivePage := Form1.TabSheet_Svgrd;
      Nb_GroupBox := -1;
      Idx_Tab := 0;
      SetLength(Tab_GroupBox, 10); // On n'en aura jamais 10
     
      for i := 0 to Form1.TabSheet_Svgrd.ControlCount -1 do
        begin
          if Form1.TabSheet_Svgrd.Controls[i] is TGroupBox then
            begin
              INC(Nb_GroupBox);
              Tab_GroupBox[Idx_Tab] := TGroupBox(Form1.TabSheet_Svgrd.Controls[i]);
              INC(Idx_Tab);
            end;
        end;
     
      for i := 0 to Nb_GroupBox do
        begin
          if Tab_GroupBox[i].Controls[i] is TBitBtn then
            begin
              Tab_GroupBox[i].Enabled := True;
              Tab_GroupBox[i].Visible := True;
            end;
        end;
     
      SetLength(Tab_GroupBox, 0);
     
    end;
    J'ai fait un test ds un prog différent, pour tester ça, et je n'ai pas cette erreur.

    PS : il y a bien un menu AdvMainMenu des TMS, sur la Form, mais je ne vois pas le rapport.

  2. #2
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Le problème doit venir d'ailleurs.
    1ere remarque, sans rapport, mais qui pourra t'eviter certaines erreurs : utiliser des methodes (d'objet) plutot que des procédures externes !
    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
    Procedure TForm1.Gerer_Changement_TabSheet;
    Var
      TabSheet_Actif : integer;
     
    begin
     
      TabSheet_Actif := Self.JvPageControl1.ActivePageIndex;
     
      case TabSheet_Actif of
        0 : // Sauvegarde
          begin
            ITF_Entree;
            Self.Btn_F_Temp.Enabled := True;
            Self.Btn_F_Temp.Visible := True;
          end;
     
        1 : // Restauration
          begin
            Desactiver_Ts_Boutons_Sur_TabSheet_Svgrd;
            Self.Btn_F_Temp.Enabled := False;
            Aff_Profil_Restaure;
            Self.TabSheet_Svgrd.PageControl.ActivePage := Self.TabSheet_Rest;
          end;
     
        2 : // Outils
          begin
                // Rien pour l'instant 
          end;
     
      end;
     
    end;
    Ensuite, ton erreur vient de là je pense (ou si ce n'est pas le cas, il y a une erreur ausi ici) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     for i := 0 to Nb_GroupBox do
        begin
          if Tab_GroupBox[i].Controls[i] is TBitBtn then
    Pour le 1er groupbox, tu va tester son 1er control
    Pour le 2eme groupbox, tu va tester son 2eme control
    ...
    peut etre que tu veux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     for i := 0 to Nb_GroupBox do
        begin
          for j := 0 to Tab_GroupBox[i].ControlCount -1 do
            if Tab_GroupBox[i].Controls[j] is TBitBtn then

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    Bonjour

    Je vais tenter ça avec Self .

    Pour ce qui concerne les GroupBox, (il n'y en a que sur le TabSheet_Svgrd), je n'y suis pas arrivé avec la technique que tu m'indiques. J'ai été obligé de lister les GroupBox ds un tableau de TWinControl. Je n'atteignais pas les BitBtnb à travers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if GroupBox.Controls[i] is TBitBtn...
    Je vais utiliser Self et je donne le retour.

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    Delphi ne veut pas de Self à cet endroit :



    Et même avec une méthode "bourrin", j'ai le même msg d'erreur. La méthode "bourrin" 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Procedure Desactiver_Ts_Boutons_Sur_TabSheet_Svgrd_2;
    begin
      Form1.Btn_Documents.Enabled := False;
      Form1.Btn_F_Configuration.Enabled := False;
      Form1.Btn_RssBandit.Enabled := False;
      Form1.Btn_Copernic.Enabled := False;
      Form1.Btn_Base_Articles.Enabled := False;
      Form1.Btn_Presse_Papiers.Enabled := False;
      Form1.Btn_Corbeilles.Enabled := False;
      Form1.Btn_Totale_Ss_Doubler.Enabled := False;
      Form1.Btn_Totale_Ss_Nettoyage.Enabled := False;
      Form1.Btn_Doubler.Enabled := False;
      Form1.Btn_Firefox.Enabled := False;
      Form1.Btn_Net_FF.Enabled := False;
      Form1.Btn_Thund.Enabled := False;
      Form1.Btn_FF_Prt_Pr_Forums.Enabled := False;
     
    end;
     
     
    Procedure Activer_Ts_Boutons_Sur_TabSheet_Svgrd_2;
    begin
      Form1.Btn_Documents.Enabled := True;
      Form1.Btn_F_Configuration.Enabled := True;
      Form1.Btn_RssBandit.Enabled := True;
      Form1.Btn_Copernic.Enabled := True;
      Form1.Btn_Base_Articles.Enabled := True;
      Form1.Btn_Presse_Papiers.Enabled := True;
      Form1.Btn_Corbeilles.Enabled := True;
      Form1.Btn_Totale_Ss_Doubler.Enabled := True;
      Form1.Btn_Totale_Ss_Nettoyage.Enabled := True;
      Form1.Btn_Doubler.Enabled := True;
      Form1.Btn_Firefox.Enabled := True;
      Form1.Btn_Net_FF.Enabled := True;
      Form1.Btn_Thund.Enabled := True;
      Form1.Btn_FF_Prt_Pr_Forums.Enabled := True;
     
    end;
    Mais, au juste : qu'est-ce cette erreur "MenuStyler" ?

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    J'ai trouvé !

    En pas à pas, je suis arrivé là-dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.TabSheet_RestExit(Sender: TObject);
    begin
      Form1.AdvMainMenu1.Create(Self);
    end;
    Déclarée (mais pas par moi) comme suit dans TForm1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    type
      TForm1 = class(TForm)
        StatusBar: TStatusBar;
    		...
    		
        procedure TabSheet_RestExit(Sender: TObject);  // C'était là, l'erreur !
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
    Pourquoi Delphi a-t-il généré ce code ? Mystère...

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/04/2014, 17h35
  2. [AC-2010] Erreur d'exécution 429 un composant ActiveX ne peut pas créer d'objet
    Par toumack dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/07/2012, 17h05
  3. Erreur d'exécution '429' : le composant ActiveX ne peut créer l'objet
    Par achille30 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/11/2011, 11h44
  4. Erreur de socket avec le composant Indy idHTTP
    Par Etanne dans le forum C++Builder
    Réponses: 3
    Dernier message: 25/10/2004, 12h27
  5. [Apache Perl] Erreur à l'exécution de mes cgi
    Par GLDavid dans le forum Apache
    Réponses: 4
    Dernier message: 28/08/2004, 21h23

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