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 :

Dialogue Fiche - Programme


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut Dialogue Fiche - Programme
    Bonjour à toutes et à tous !

    Alors, j'ai deux programmes cpp. L'un est une unité à laquelle est rattachée une fenêtre avec des composants, style Edti1, Label, ProgressBar.....
    L'autre est un programme qui est appelé lorsque l'on appuie sur le bouton.

    J'aurais aimé passer les valeurs récupérées par exemple dans le composant Edit1 à ce dernier programme. Une solution consiste bien sur à appeler le programme avec ladite valeur en paramètre d'entrée. Une autre solution serait d'aller chercher avec ce programme. C'est là que ça cloche, je sais pas comment faire.

    Autre exemple, lorsque j'appuie sur le bouton, je lance un programme qui serait destiné à faire avancer la barre ProgressBar. Seulement pour ça, il faut que dans ce programme j'ai accès au composant ProgressBar.
    Toujours la même question : comment faire ?

    Je ne peux pas passer en argument d'entrée l'adresse du TForm puisque le ProgressBar n'en est pas un élément. Je ne peux pas non plus passer l'adresse de TForm1 puisque ce type n'est pas reconnu.

    Y a-t-il un moyen de passer un handle ou qqch du style de la fenêtre à mon programme ?

    Merci pour les conseils, et si je ne suis pas clair, n'hésitez pas à me le faire savoir.


  2. #2
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut Re: Dialogue Fiche - Programme
    Citation Envoyé par androz
    L'autre est un programme qui est appelé lorsque l'on appuie sur le bouton.
    Si vous déclarez ce programme (je suppose que vous voulez dire sous-programme) comme méthode de la classe principale, vous aurez accès à ses composants.

    Si c'est une méthode d'une autre classe ou une fonction isolée (mais c'est déconseillé en POO), il faut simplement préfixer vos appels par le nom de la classe principale, par exemple Form1->Edit1->Text.

    Dans toute méthode de la classe principale, vous avez par défintion accès à ses membres, vous pouvez certes aussi préfixer vos instructions par Form1-> (qui peut le plus peut le moins) mais à l'extérieur cette classe, il faut impérativement préfixer les instructions, le compilateur n'est pas censé savoir où ses trouve les variables que vous invoquez.

    Si la fonction dont vous parlez se situe dans un autre ficher, il faut inclure l'en-tête d'unité. Entrez dans cet autre fichier cpp et faites Alt-F11, C++ Builder va vous proposer d'inclure l'en-tête d'unité (unit1.h par défaut). Cela a pour effet de rajouter include unit1.h obligatoire ici car c'est là que se situe la déclaration de la classe que vous voulez invoquer dans cet autre fichier.

    À bientôt
    Gilles

  3. #3
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    Bonjour,

    et merci pour la réponse, mais ce n'est peut être pas tout à fait ce que je souhaitais. Je vais essayer d'être plus clair.

    J'ai deux fichiers (4 en fait) : A.cpp A.h et B.cpp B.h

    Dans A.h, je déclare une fiche avec toutes ses méthodes
    Dans A.cpp je déclare les méthodes de la fiche et j'inclue A.h et B.h

    Dans B.h je déclare une classe et ses méthodes
    Dans B.cpp je déclare les méthodes de cette classe et j'inclue B.h

    Seulement, dans une méthode de ma classe, je voudrais avoir accès à une
    propriété d'un composant de la fiche.
    J'avais pensé inclure A.h dans le header B.h, mais ça me ferait pas
    déclarer plusieurs fois les mêmes choses ?
    Ce que j'ai fait, c'est instancié une classe B dans une méthode de la fiche
    en lui passant comme argument un pointeur Form1.
    Malheureusement, le compilateur ne reconnait pas le type de classe
    TForm1 qui hérite de la classe TForm. Il reconnaît par contre le type
    TForm, mais celui-ci ne contient bien sur aucun composant.
    La méthode que j'ai alors employée, est de passer au constructeur de ma
    classe B non pas le pointeur de la fiche, mais plutôt le pointeur sur le ou
    les composants qui m'intéressent.
    Il aurait été plus pratique tout de même de pouvoir passer le pointeur
    Form1 en argument..... mais le compilateur ne veut pas, et j'ai l'impression
    de déclarer plusieurs fois les mêmes choses.

    Je ne sais si j'ai été clair ou si je suis encore plus flou ?

  4. #4
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Citation Envoyé par androz
    J'avais pensé inclure A.h dans le header B.h, mais ça me ferait pas déclarer plusieurs fois les mêmes choses ?
    Si les fichiers sont créés par C++ Builder, tout cela est prévu, ils sont bornés par une clause conditionnelle qui empêche les erreurs.

    Si A.cpp accède à B.cpp il faut inclure B.h dans A.pp et réciproquement si B.cpp accède à A.cpp il faut inclure A.h dans B.cpp.

    Simplement dans A, vous devez préfixer les éléments de B par le nom de la classe. Par exemple, les noms des formes sont par défaut Form1 et Form2. Dans Form1, vous ne préfixez pas car vous êtes "chez vous" mais si vous voulez accéder à un composant de Form2 depuis Form1, il faut préfixer et donc écrire Form2->Edit1->Text par exemple.

    En espérant avoir été un peu plus clair bien je redise la même chose.

    À bientôt
    Gilles

  5. #5
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    Merci pour la réponse, vous avez été parfaitement clair dès le début.
    Peut-être est-ce juste moi qui n'arrive pas à formuler mon problème.
    Enfin toujours est-il que je suis parfaitement au courant de ce que vous
    m'annoncez au sujet des préfixes, et c'est pourquoi j'étais très étonné de
    ne pouvoir avoir accès aux méthodes de ma fiche.
    Bref, je vais essayer à nouveau calmement et reprendre ça.

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

Discussions similaires

  1. crée une fiche dans l'execution du programme
    Par adoulou dans le forum Débuter
    Réponses: 6
    Dernier message: 08/04/2009, 11h54
  2. dialogue entre c++ et un programme windows
    Par wapita dans le forum C++
    Réponses: 6
    Dernier message: 20/05/2008, 17h45
  3. Application multifiches, "dialogue entre les fiches"
    Par Tsukaasa dans le forum Delphi
    Réponses: 8
    Dernier message: 27/03/2007, 21h06
  4. Réponses: 2
    Dernier message: 30/08/2006, 18h44
  5. Boite de dialogue au lancement du programme
    Par duranton dans le forum C++
    Réponses: 1
    Dernier message: 06/06/2006, 13h28

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