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

C++Builder Discussion :

Probl�me de cr�ation de frame en s�rie au runtime [IDE]


Sujet :

C++Builder

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par d�faut Probl�me de cr�ation de frame en s�rie au runtime
    Bonjour,

    j'ai cr�� une frame qui ne fait rien pour l'instant
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // ---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "UnitTest.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TFrameTest *FrameTest;
    //---------------------------------------------------------------------------
    __fastcall TFrameTest::TFrameTest(TComponent* Owner)
    	: TFrame(Owner)
    {
    }
    Et ensuite dans ma form principal, j'essaye de cr�er plusieurs instances de ma Frame:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    __fastcall TFormPrincipal::TFormPrincipal(TComponent* Owner)
    	: TForm(Owner)
    {
     
    	for (int i = 0; i < 10; i++)
    	{
    		TFrameTest * frame = new TFrameTest(this);
    		frame->Parent = this;
    	}
    }
    et j'obtiens l'erreur suivante : "EComponentError with message ' A component named FrameTest already exists."

    Pourtant � un autre endroit dans mon projet, je cr�� des frames dynamiquement de cette fa�on sans probl�me !
    Il doit donc y avoir une diff�rence, mais impossible de trouver laquelle...
    Ma question est donc, comment faire pour pouvoir ins�rer dynamiquement (au run time) plusieurs fois la m�me Frame ??

    merci beaucoup pour votre aide
    Pascale38

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    salut
    le probl�me ne se situe pas dans la cr�ation d'instance de ta classe TFrameTest, mais dans le nom du composant FrameTest qui doit �tre unique.
    Une des solutions serait d'indexer le nom du composant dans la boucle du style FrameTest1, FrameTest2....
    cdlt
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par d�faut
    Merci pour ta r�ponse,

    j'ai essay� ta solution en cr�ant en "dur" quelques instances mais �a ne marche pas mieux.
    C'est le nom "FrameTest" qui ne lui plait pas.
    Mais surtout ce qui est �trange, c'est que j'y arrive dans une autre partie de mon application...

    Pascale38

  4. #4
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    Salut Consid�re l'exemple suivant qui illustre mes propos
    La Frame

    le DFM
    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
    64
     
    object FrameTest: TFrameTest
      Left = 0
      Top = 0
      Width = 127
      Height = 237
      TabOrder = 0
      object Label1: TLabel
        Left = 48
        Top = 99
        Width = 31
        Height = 13
        Caption = 'Label1'
      end
      object Label2: TLabel
        Left = 48
        Top = 122
        Width = 31
        Height = 13
        Caption = 'Label1'
      end
      object Label3: TLabel
        Left = 48
        Top = 145
        Width = 31
        Height = 13
        Caption = 'Label1'
      end
      object Label4: TLabel
        Left = 48
        Top = 168
        Width = 31
        Height = 13
        Caption = 'Label1'
      end
      object Label5: TLabel
        Left = 48
        Top = 191
        Width = 31
        Height = 13
        Caption = 'Label1'
      end
      object Memo1: TMemo
        Left = 0
        Top = 0
        Width = 127
        Height = 89
        Align = alTop
        Lines.Strings = (
          'Memo1')
        TabOrder = 0
        ExplicitLeft = 24
        ExplicitTop = 16
        ExplicitWidth = 185
      end
      object Button1: TButton
        Left = 32
        Top = 210
        Width = 75
        Height = 25
        Caption = 'Button1'
        TabOrder = 1
      end
    end
    le .H de la Frame
    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
     
    //---------------------------------------------------------------------------
     
    #ifndef Unit92H
    #define Unit92H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class TFrameTest : public TFrame
    {
    __published:	// Composants gérés par l'EDI
    	TMemo *Memo1;
    	TLabel *Label1;
    	TLabel *Label2;
    	TLabel *Label3;
    	TLabel *Label4;
    	TLabel *Label5;
    	TButton *Button1;
    private:	// Déclarations utilisateur
    public:		// Déclarations utilisateur
    	__fastcall TFrameTest(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TFrameTest *FrameTest;
    //---------------------------------------------------------------------------
    #endif
    le .C de la Frame
    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
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit92.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TFrameTest *FrameTest;
    //---------------------------------------------------------------------------
    __fastcall TFrameTest::TFrameTest(TComponent* Owner)
    	: TFrame(Owner)
    {
    }
    //---------------------------------------------------------------------------
    Le .H du programme de Test
    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
     
    //---------------------------------------------------------------------------
     
    #ifndef Unit91H
    #define Unit91H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class TForm91 : public TForm
    {
    __published:	// Composants gérés par l'EDI
    	private:	// Déclarations utilisateur
    public:		// Déclarations utilisateur
    	__fastcall TForm91(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm91 *Form91;
    //---------------------------------------------------------------------------
    #endif
    et finalement le code
    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
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit91.h"
    #include "Unit92.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm91 *Form91;
    //---------------------------------------------------------------------------
    __fastcall TForm91::TForm91(TComponent* Owner)
    	: TForm(Owner)
    {
    	   #define pad 10
    	   for(int i=0;i<10;i++)
    	   {
    		TFrameTest* Frame= new TFrameTest(this);
    		Frame->Name+=IntToStr(i);
    		Frame->Parent=this;
    		if(i==0)
    			Frame->Left=0;
    		else
    		 Frame->Left=i*(Frame->Width+pad);
    		Frame->Enabled=true;
    		Frame->Visible=true;
    	   }
    }
    //---------------------------------------------------------------------------
    cdlt
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par d�faut
    Toutes mes excuses DjmSoftware, j'avais mal interpr�t� ta r�ponse,
    mais oui bien s�r �a fonctionne comme �a, �a me semble �vident en plus maintenant, pfff

    Ceci dit �a n'explique pas pourquoi �a marche ailleurs sans faire �a, dois y avoir un truc qui change le nom qq part que j'ai pas vu.

    En tout cas merci beaucoup !!!!

    Pascale38

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 1
    Dernier message: 24/08/2010, 17h18
  2. R�ponses: 9
    Dernier message: 05/04/2006, 17h48
  3. Probl�me de cr�ation de table sous MySql
    Par ducamba dans le forum Requ�tes
    R�ponses: 2
    Dernier message: 21/06/2003, 09h59
  4. Probl�me de cr�ation de fen�tre
    Par tomateauketchup dans le forum DirectX
    R�ponses: 1
    Dernier message: 08/06/2003, 19h42
  5. R�ponses: 2
    Dernier message: 24/05/2003, 00h07

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