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 :

TPaintBox dynamique sur une TTabSheet


Sujet :

C++Builder

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Points : 151
    Points
    151
    Par défaut TPaintBox dynamique sur une TTabSheet
    bonjour,
    j'instancie de manière dynamique une TPaintBox que je veux insérer sur une TTabSheet créée à la demande. L'utilisateur doit pouvoir cliquer sur cette TPaintBox pour y dessiner des formes géométriques.
    J'a le code suivant:
    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
     
    //nouvelle page pour la table PageControl
    TTabSheet* page = new TTabSheet(this);
    page->Width = 200;
    page->Height = 150;
    page->Top = 10;
    page->Left = 0;
    //insertion sur le TPageControl
    page->PageControl = PageControl;
    //insérer un contrôle sur la nouvelle page
    TPaintBox* paintBox = new TPaintBox(page);
    paintBox->Parent = page;
    paintBox->Width = 150;
    paintBox->Height = 120;
    paintBox->Top = 10;
    paintBox->Left = 10;
    paintBox->Canvas->Pen->Color = clYellow;
    paintBox->Canvas->Brush->Color = clRed;
    TRect NewRect = Rect(20, 30, 50, 90);
    paintBox->Canvas->FillRect(NewRect);
    La TPaintBox n'apparaît jamais.
    J'arrive à faire un boulot identique avec un TLabel.

    Qu'est ce que j'oublie au niveau de la TPaintBox??

    Merci

  2. #2
    Membre habitué
    Avatar de Freeze
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 131
    Points : 162
    Points
    162
    Par défaut
    pour une TPaintBox, le dessin se fait sur l'évènement OnPaint

  3. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Points : 151
    Points
    151
    Par défaut
    Bonjour et merci pour la réponse,

    pour un contrôle TPaintBox implanté à la conception de la Form, c'est ok.
    Ce que je n'arrive pas à mettre en place, c'est l'écouteur d'évènement Paint et Click sur cette TPaintBox installée dynamiquement (syntaxe et appel).
    C'est peut être pas possible...

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 846
    Points
    24 846
    Par défaut
    pourtant tu as déjà un très bon début !
    Pense qu'un TPaintBox est un TGraphicControl, il ne pourra JAMAIS s'afficher par dessus un TPanel ou TGroupBox, pense à mettre ton TPaintBox dans le Container TWinControl de plus haut niveau en Z-Order

    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
     
    //nouvelle page pour la table PageControl
    TTabSheet* page = new TTabSheet(this);
    page->Width = 200;
    page->Height = 150;
    page->Top = 10;
    page->Left = 0;
     
    //insertion sur le TPageControl
    page->PageControl = PageControl;
     
    //insérer un contrôle sur la nouvelle page
    TPaintBox* paintBox= new TPaintBox(page);
    paintBox->Parent = page ;
    paintBox->Width = 150;
    paintBox->Height = 120;
    paintBox->Top = 10;
    paintBox->Left = 10;
    paintBox->OnClick = PaintBoxClickEventHandler;
    paintBox->OnPaint = PaintBoxPaintEventHandler;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    private:
      void __fastcall PaintBoxClickEventHandler(TObject* Sender);
      void __fastcall PaintBoxPaintEventHandler(TObject* Sender);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void __fastcall TForm...::PaintBoxPaintEventHandler(TObject* Sender)
    {
      TPaintBox* paintBox= dynamic_cast<TPaintBox*>(Sender);
      if (paintBox)
      {
        paintBox->Canvas->Pen->Color = clYellow;
        paintBox->Canvas->Brush->Color = clRed;
     
        TRect NewRect = Rect(20, 30, 50, 90);
        paintBox->Canvas->FillRect(NewRect);
      }
    }
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Points : 151
    Points
    151
    Par défaut
    Merci beaucoup pour cette réponse ShaiLeTroll.
    Ca fonctionne parfaitement!

  6. #6
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Il y avait une autre solution en dérivant de TCustomControl qui hérite de TWinControl ...

    A plus !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/05/2007, 22h34
  2. tri dynamique sur une Listarea
    Par ZACKX dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 25/04/2007, 16h01
  3. [débutant] Filtre 'dynamique' sur une JTable
    Par d_token dans le forum Composants
    Réponses: 8
    Dernier message: 04/08/2006, 12h01
  4. [VBA E] bouton dynamique sur une feuille
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/06/2006, 18h05
  5. Connexion dynamique sur une base SQL Server
    Par jh0483 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/08/2005, 15h10

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