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 :

creation dynamique d'objet


Sujet :

C++Builder

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut creation dynamique d'objet
    bonjour tout le monde ,

    mon probleme est le suivant :
    je veux créer un objet dynamiquement ( ex: Edit , Caption ) dans une fenetre connaissant simplement son Handle , est possibe ??


    merci

    ( ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    HWND h;
    h=getwindow( NULL, "fenetre");
    TEdit *edit;
    edit->Parent=h;
    ...???)
    est que ce code est logique )

    merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Points : 42
    Points
    42
    Par défaut
    Oui c'est possible
    je l'ai fait une fois et je pense que le source et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TButton b=new TButton("name");//tu peut aussi pressiser son position et tout
    b->Parent=MaFrame;

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    slt
    j'ai essayé ça mais ça ne marche toujours pas

    merci

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 188
    Points : 143
    Points
    143
    Par défaut
    Je ne pense pas que ce soit possible de la manière dont tu veux procéder car tu essayes de créer un composant de la VCL (TEdit) dans un composant qui ne fait pas partie de la VCL (la fenêtre).

    Quand tu fais (d'ailleurs )
    Tu assigne à Parent le handle de la fenêtre windows alors que le paramètre attendu est un pointeur sur un objet TWinControl (en particulier TForm).

    Donc si tu veux insérer une boîte de saisie (encapsulé dans un TEdit dans la VCL), soit tu le fais dans un composant de la VCL soit tu le fais directement à partir de l'API Windows.

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Citation Envoyé par dz_robotix
    slt
    j'ai essayé ça mais ça ne marche toujours pas

    merci
    Ca marche très bien, il faut juste penser à lui donner une position et surtout une taille sinon tu ne pourras pas le voir

  6. #6
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    il y a un exemple complet ici qui permet de créer un bouton et de gérer les évennements dynamiquement.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    merci bondy boy mais j'ai pas pu resoudre mon probleme qui est la creation d'un bouton dans une fenetre connaissant son handle

  8. #8
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut, je pense que ca devrait marcher comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        MonBouton = new TButton(this);
        MonBouton->Left = 20;
        MonBouton->Top = 20;
        MonBouton->Caption = "Bouton";
        MonBouton->Parent = HandleFenetre;

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    bonjour,

    j'ai essayé le code suivant (apres casting):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        MonBouton = new TButton(this);
        MonBouton->Left = 20;
        MonBouton->Top = 20;
        MonBouton->Caption = "Bouton";
        MonBouton->Parent = (TwinControl*)HandleFenetre;
    sa compile mais lors de l'execution j'ai un message d'erreur (erreur de composant rtl ..).
    je ne sais pas si le casting est bon ou non

  10. #10
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 438
    Points
    1 438
    Par défaut
    Je vais aussi participer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      TButton * MonBouton
      MonBouton = new TButton(this);
      MonBouton->Left = 20;
      MonBouton->Top = 20;
      MonBouton->Caption = "Bouton";
      MonBouton->Parent->Handle = HandleFenetre;//obtenu par GetWindowDC par exemple
    N'oublie pas le *.
    Parent est de type TWinControl donc on ne peut pas lui affecter directement un handle.

    si ça ne marche pas encore, utilisez SetParent()

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    toujours probleme de casting ( pas possible d'acceder au handle du parent:
    parent->Handle : fausse expression )

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Points : 28
    Points
    28
    Par défaut
    Ben moi je me demandais pour allouer un Check box si sa marchais aussi avec parent car voici ce que j'ai ecrit mais rien ne s'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
             TCheckBox *CB_capteur;
            CB_capteur=new TCheckBox(GB_capteurs);
            CB_capteur->Caption="Levier de vitesse";
            CB_capteur->Checked=false;
            CB_capteur->Font->Style=TFontStyles()<<fsBold;
            CB_capteur->Top=45;
            CB_capteur->Left=20;
            CB_capteur->Visible=true;
            CB_capteur->ParentShowHint=true;
    aidez moi s'il vous plait merci

  13. #13
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Citation Envoyé par nizzart
    Ben moi je me demandais pour allouer un Check box si sa marchais aussi avec parent car voici ce que j'ai ecrit mais rien ne s'affiche
    TCheckBox *CB_capteur;
    CB_capteur=new TCheckBox(GB_capteurs);
    CB_capteur->Caption="Levier de vitesse";
    CB_capteur->Checked=false;
    CB_capteur->Font->Style=TFontStyles()<<fsBold;
    CB_capteur->Top=45;
    CB_capteur->Left=20;
    CB_capteur->Visible=true;
    CB_capteur->ParentShowHint=true;

    aidez moi s'il vous plait merci
    Bonsoir,
    Effectivement, apparemment dans ton cas sans préciser le Parent de l'objet crée dynamiquement, c'est peine perdue ... (mais dis moi, puisque que tu le pressentais, pourquoi ne pas l'avoir tester directement ?)
    @ +

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Points : 28
    Points
    28
    Par défaut
    Escusez moi mais en faite j'ai reussi a trouver dans la liste le parent.
    Et maintenant sa marche impec.
    Merci quand meme a vous

  15. #15
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    A priori, cela fonctionne avec les 'tres classiques' API :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    HWND h;
    h = FindWindow( NULL, "delphiForm");
    CreateWindow("BUTTON","", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 300, 290, 100, 100, h, h, NULL, NULL);
    //ou 'delphiForm' est le nom d'une fenêtre visée pour l'ajout du gros, gros bouton 
    // dans mon cas ...
    Reste a gérer les évènements dans cet objets nouvellement crée, en je dirais qu'il faut suivre cette voie et profiter des très bons tutos de ce site, non ?

    En espérant t'aider,
    @ +

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    ça marche tres bien
    merci à vous tous

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

Discussions similaires

  1. creation dynamique d'objets avec souris
    Par guitariste dans le forum JavaFX
    Réponses: 4
    Dernier message: 04/04/2009, 17h11
  2. Creation dynamique d'objet
    Par funkadelic dans le forum Général Java
    Réponses: 10
    Dernier message: 21/02/2007, 18h01
  3. [3.0][XAML] Création dynamique d'objets graphiques
    Par Yaugzebul dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 20/11/2006, 15h37
  4. Réponses: 8
    Dernier message: 04/09/2003, 16h07
  5. Creation dynamique d'un objet
    Par Tom_sawyer13 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 06/08/2003, 18h31

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