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 :

Pointeur MultiFenetre


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 18
    Par défaut Pointeur MultiFenetre
    Voilà je cherche à créer un pointeur qui me permettra d'acceder à la fenetre en cours d'utilisation.
    Dans mes differentes fenetres d'utilisation j'ai des Frames portant le même nom sur toutes mes fenetres, avec differents composants à l'intérieur.
    Je souhaiterais pouvoir accéder à mes composants à l'aide du pointeur général.
    J'ai créé un pointeur de Form et renseigne le pointeur de la façon suivante:
    TForm * FormPointer;
    TFormTest * FormTest1;

    FormPointer = FormTest1;
    Ensuite j'essaie d'acceder à un composant avec le pointeur mais il me dit à la compilation qu'il ne fait pas parti de TForm. Exemple:
    FormPointer->FrameInfo1->LabelTitre->Caption = "Ceci est un test";

    Cela me semble normal après réflexion mais comment puis je faire, pour acceder à ses infos à partir d'un pointeur global qui pourra pointer sur
    TFormTest * FormTest1; ou sur TFormEssai * FormEssai1 qui contiennent les même nom de composants

    Si vous pouvez m'aidez merci d'avance.

    Sam

  2. #2
    Membre expérimenté
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Par défaut
    et en castant simplement,
    ça ne marche pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((TFormTest *)FormPointer)->FrameInfo1->LabelTitre->Caption = "Ceci est un test";

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 18
    Par défaut
    Effectivement en castant cela permettrait peut-être de marcher mais mon intérêt était de gérer avec un seul pointeur différentes fenêtre (TFormTest, TFormEssai, ...). Si je cast je peux plus le faire.

  4. #4
    Membre expérimenté
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Par défaut
    Citation Envoyé par samed
    mon intérêt était de gérer avec un seul pointeur différentes fenêtre (TFormTest, TFormEssai, ...). Si je cast je peux plus le faire.
    ben si, tu peux continuer à le faire . Ca ne posera aucun probleme.
    En fait ton pointeur "multiform" FormPointer reste toujours pareil

    quand tu caste comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    TForm * FormPointer;
    TFormTest * FormTest1;
    FormPointer = FormTest1; 
    ((TFormTest *)FormPointer)->FrameInfo1->LabelTitre->Caption = "Ceci est un test";
    // là tu peux continuer normalement avec une autre form:
    FormPointer = FormTruc; 
    ((TFormTruc *)FormPointer)->Edit1->Caption = "Ceci est un test 2";
    en fait c'est comme si on ecrivait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TForm * FormPointer;
    TFormTest * FormTest1;
    FormPointer = FormTest1; 
    TFormTest * FormTestTemporaire = (TFormTest *)FormPointer; 
    FormTestTemporaire->FrameInfo1->LabelTitre->Caption = "Ceci est un test";
    tu peux utiliser ça sans soucis.
    bonne continuation.
    Djob.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 18
    Par défaut
    Oui je suis d'accord mais cela m'oblige à savoir quelle type de fenetre j'utilise au moment des faits, et j'aurais voulu éviter ça pour pourvoir utiliser le pointeur de façon très généraliste.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TForm * FormPointer;
    TFormTest * FormTest;
    TFormEssai * FormEssai;
    à un moment je vais allouer FormTest à FormPointer et une fois je vais allouer Form Essai à FormPointer

    Je veux ensuite pourvoir faire un cas général qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FormPointer->Edit1->Text = "ceci est un test";
    Que je pointe sur FormTest ou FormEssai

    En fait j'ai trouver la solution c'est de créer une fenêtre héritée par les deux suivantes. Du coups j'ai bien les même composants qui sont présents dans chaque form et puis je peux en rajouter d'autre pour une autre utilisation particulière de chaque form. Du coups il suffit de créer un pointeur sur la form mère et le tour est joué.

    Merci pour le coups de main.
    Si certains sont intéressés je peux passé un exemple.

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

Discussions similaires

  1. pointeurs
    Par ghost74 dans le forum C
    Réponses: 3
    Dernier message: 14/12/2002, 02h52
  2. Pointeur vers un tableau
    Par Nikos dans le forum C
    Réponses: 3
    Dernier message: 09/12/2002, 00h43
  3. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  4. djgpp et pointeurs far -2
    Par elvivo dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 29/07/2002, 22h43
  5. djgpp et pointeurs far
    Par elvivo dans le forum C
    Réponses: 2
    Dernier message: 13/07/2002, 00h44

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