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 :

Prb communication entre fenetre !svp


Sujet :

C++Builder

  1. #1
    Membre confirmé Avatar de comrad85
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 188
    Par défaut Prb communication entre fenetre !svp
    Bonjour a tous!!
    voila je dois concevoir un logiciel avec builder c++ 6 !!je debute avec builder et j'ai beaucoup de problemes notament avec la communication entre fenetres!!
    par ex j'ai "Form1" et un "Frame2" que je déclare indépendement!! je n'arrive pas à utiliser un "TBitmap" dans "Frame2" qui a été declaré dans "Form1!! je ne sais pas si vous avez compri!! en tout cas si vous pouvez m'aider n'hésitez pas car je suis !!!merci a bientot

  2. #2
    Membre confirmé Avatar de saidus
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations forums :
    Inscription : Octobre 2004
    Messages : 166
    Par défaut
    Bonjour !!
    avant de pouvoir utiliser le Bitmap il faut inclure le fichier .hpp de Form1 dans le fichier source *.cpp ou est declarer le Frame et que le Bitmap ne doit pas etre declarer dans la section private de TForm1

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    tu dois rajouter dans ton .cpp :

    dans ta unit1

    dans la unit2

  4. #4
    Membre confirmé Avatar de comrad85
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 188
    Par défaut
    merci pour vos reponses!! j'ai fait ce que vous m'avez dis mais j'ai tjrs un message d'erreur (violation.....) mon TBitmap je ne l'ai pas declaré dans la partie "private"!! je n'arrive pas a comprendre builder !!j'ai essayé de declarer Form1 comme fct amie dans frame2 mais rien n'a changé !!
    a bientot

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut comrad85
    J'ai fait un essais avec Frame j'ai une erreur Violation xxxxx
    Si je teste avec une Form pas de probleme
    Pour l'exemple
    Sur la From1, un TButton, un TImage
    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
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    #include "Unit2.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Form2->Show();
    }
    //---------------------------------------------------------------------------
    Sur la Form2, un TButton
    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
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    #include "Unit2.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm2 *Form2;
    //---------------------------------------------------------------------------
    __fastcall TForm2::TForm2(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm2::Button1Click(TObject *Sender)
    {
    Form1->Image1->Canvas->LineTo(10, 50);
    Form1->Image1->Canvas->MoveTo(300, 300);
    }
    //---------------------------------------------------------------------------
    Je n'ais pas touche aux .h
    La Form1 s'affiche on click sur le Button la Form2 s'affiche on click sur le Button on trace un trait sur le TImage de la Form1

  6. #6
    Membre confirmé Avatar de comrad85
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 188
    Par défaut
    merci blondelle!!ca marche !! mais j'ai trop de difficulté avec builder !! j'aimeri juste savoir comment obtenir le header d'un bitmap !!si qq'un connait ca serait gentil de me dire car j'en ai besoin pour mon projet!! ciao

  7. #7
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Je ne comprend pas ce que tu veu dire par " header "
    Si c'est charger un Bitmap voici un exemple tire de l'aide en ligne BCB6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Graphics::TBitmap *BrushBmp = new Graphics::TBitmap;
      BrushBmp->LoadFromFile("C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\Massiv10\\Massiv10\\Bitmaps\\Arrow\\arcarrow1.bmp");
      Form1->Canvas->Brush->Bitmap = BrushBmp;
      Form1->Canvas->FillRect(Rect(0,0,800,800));
    delete BrushBmp;
    }

  8. #8
    Membre confirmé Avatar de comrad85
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 188
    Par défaut
    je veux parler du BITMAPINFOHEADER ou BITMAPFILEHEADER!!!!

  9. #9
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Un lien sur le site sur le sujet

  10. #10
    Membre confirmé Avatar de comrad85
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 188
    Par défaut
    merci blondelle pour le lien!!j'ai juste une derniere question (dsl pour le derengement)....j'ai envie de savoir si Graphics::TBitmap crée un bitmap dependant du periph ou un bitmap independant du periph!!! a bientot

  11. #11
    Membre confirmé Avatar de comrad85
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 188
    Par défaut
    personne pour m'aider??

  12. #12
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Desole mais la je ne sais pas

  13. #13
    Membre confirmé Avatar de comrad85
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 188
    Par défaut
    pas grave blondelle!! tu m'as deja beaucoup aidé merci

  14. #14
    Membre confirmé Avatar de saidus
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations forums :
    Inscription : Octobre 2004
    Messages : 166
    Par défaut
    Pour quoi veux tu travailler avec des BMP essaye avec des PNG ou JPEG ca serai rapide leger et ..... multiplatforme

  15. #15
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Peut-être que l'erreur vient du fait que le bitmap n'a pas été créé.

    En global, dans le .cpp de Form1 ça donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Graphics::TBitmap *Bitmap = new Graphics::TBitmap;
    Et dans ce cas il suffit de déclarer dans un autre .cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    extern Graphics::TBitmap *Bitmap;
    C'est la manière de procéder la plus simple qui soit !


    Si ce bitmap est déclaré en tant que propriété (public) de TForm1 il suffit de le construire dans le constructeur de TForm1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Bitmap = new Graphics::TBitmap;
    Dans ce cas précis, il suffira d'inclure le header de TForm1 (unit1.h) dans l'unté des fenêtre filles.

    Dans tous les cas, il faudra penser à détruire le bitmap, dans la OnClose de Form1 par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    delete Bitmap;
    Bitmap = NULL;
    Si ce bitmap est utilisé pour rafraîchir les fenêtres filles (donc via leur OnPaint et/ou OnResize respectives), dans ce cas il sera utile d'encadrer avec un test :
    (On est donc ici dans une méthode membre d'une fenêtre fille)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if(Bitmap != NULL)
        {
        //...le dessin 
        //On reporte sur la fenêtre fille, quelque part en (x,y)
        //Canvas->Draw(x,y, Bitmap); // cas du bitmap déclaré en global
        //Canvas->Draw(x,y, Form1->Bitmap); // cas du bitmap propriété de TForm1
        }
    A plus !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/05/2010, 17h06
  2. Communication entre fenetre
    Par alacaraibe dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/07/2009, 20h33
  3. Communication entre fenêtres
    Par cnicolot dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 01/08/2007, 08h06
  4. Communication entre FENETRES !
    Par A_B dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 15/03/2007, 17h16
  5. [Jdialog] Question sur communication entre fenetre
    Par Oreste dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 17/03/2005, 11h23

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