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 :

Supprimer la bordure d'un TPageControl


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 24
    Points : 19
    Points
    19
    Par défaut Supprimer la bordure d'un TPageControl
    Bonjour,
    dans la méthode OnDrawTab d'un contrôle TPageControl, on a bien accès à la zone de dessin, ce qui permet de personnaliser les onglets mais je n'arrive pas à me débarrasser du trait de contour, qui manifestement n'est pas dans la zone de dessin.
    Est-ce que quelqu'un sait comment faire ?
    Pour un control TPanel, on peut modifier des propriétés du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       BorderWidth=0;
       BevelKind=bkNone;
       BevelWidth=0;
       BevelOuter=bvNone;
       BevelInner=bvNone;
    mais là ?
    merci à vous

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    La propriété Style peut prendre comme valeur FlatButton, ce qui a pour effet de supprimer le cadre.
    Cependant je ne sais pas si c'est ce que tu cherches !
    A ta disposition
    Christophe MERLIER

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 24
    Points : 19
    Points
    19
    Par défaut Merci de ta réponse
    J'en profite pour te poser une autre question...
    Est-ce que c'est parce qu'il s'agit de contrôles natifs windows que l'on ne peut pas redéfinir la méthode Paint sur les TabSheet ?
    De même pour les boutons de la classe TButton ? Je me suis fait une classe TMyButton descendant de TCustomControl rien que pour pouvoir mettre de la couleur sur un bouton ...
    Marc

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    Les TabSheet sont des descendants de TWinControl.
    TWinControl ne fournit pas de Canvas pour dessiner et par la même de fonction Paint.
    Pour pouvoir redessiner un TabSheet, il faudrait que celui hérite de TCustomControl.
    Je ne peux pas t'en dire plus car je n'ai pas étudier plus avant le phénoméne.
    Tu constateras que le TPageControl hérite d'un TCustomPageControl qui te fournit un Canvas.
    A ta disposition
    Christophe MERLIER

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    Pour modifier le style d'un composant descendant de TWinControl tu peux utiliser le code suivant (API Windows):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ::SetWindowLongPtr(PageControl1->Handle, GWL_EXSTYLE,
          ::GetWindowLongPtr(PageControl1->Handle,GWL_EXSTYLE) & ~WS_EX_WINDOWEDGE);
    Le code ci-dessus à pour effet de rendre les bordures flat. Pour enlever completement les bordures il faut que tu ailles à la pêche dans le msdn, pour voir comment piloter les Style (GWL_STYLE) et les styles étendus (GWL_EXSTYLE).

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    J'ai été un peu vite.
    Je précise qu'il faut mettre ce code dans le FormCreate et pour faire du pur API Windows le code est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      ::SetWindowLongPtr(hWnd, GWL_EXSTYLE,
          ::GetWindowLongPtr(hWnd,GWL_EXSTYLE) | WS_EX_STATICEDGE);
      ::SetWindowPos(hWnd, NULL, 0, 0, 0, 0,
          SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
    Mais dans le cas d'un tab control le 1er cas suffit.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 24
    Points : 19
    Points
    19
    Par défaut Merci, je vais essayer tout ça.
    Marc

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Points : 109
    Points
    109
    Par défaut
    Hum ... Marc semble content mais chez moi ça pas marche !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    ::SetWindowLongPtr(PageControl1->Handle, GWL_EXSTYLE,
          ::GetWindowLongPtr(PageControl1->Handle,GWL_EXSTYLE) | WS_EX_STATICEDGE);
    }
    //---------------------------------------------------------------------------
    ?? what's wrong ??
    A ta disposition
    Christophe MERLIER

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 24
    Points : 19
    Points
    19
    Par défaut Rassure-toi, chez moi ça ne marche pas non plus...
    mais bon, j'ai mis un Tpanel sur mes onglets et je redessine les boutons de navigation.
    Marc

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Points : 109
    Points
    109
    Par défaut
    Je comprend mieux !
    A ta disposition
    Christophe MERLIER

  11. #11
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    Ce qui ne fonctionne pas ce sont les styles utilisés. Seul le premier est compatible avec un TabControl (WS_EX_WINDOWEDGE) le second est pris d'un autre exemple, il sert à illustrer l'appel complet à l'API Windows.
    Perso j'utilise le premier cas dans un projet et cela fonctionne.

    D'un controle à l'autre les styles peuvent différer, je n'ai jamais trouver de doc exhaustive sur le sujet alors il faut tatonner un peu. La liste complete des styles se trouve sur le site du Msdn (Microsoft Developper Network).

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

Discussions similaires

  1. [Frame] Supprimer une bordure
    Par dam_moreyllo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 09/02/2007, 14h19
  2. Supprimer une page dans un TPageControl
    Par PHIL45 dans le forum Delphi
    Réponses: 2
    Dernier message: 20/01/2007, 06h02
  3. Supprimer la bordure autour des images du menu
    Par Strix dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 18/11/2006, 10h25
  4. Coment supprimer les bordures des images dans un lien ?
    Par darkwhite dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 05/11/2006, 17h09
  5. supprimer les bordures d'un JTextField
    Par mikedavem dans le forum Composants
    Réponses: 5
    Dernier message: 15/06/2006, 15h11

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