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

Composants VCL Delphi Discussion :

[TabControl] Afficher du texte en transparence


Sujet :

Composants VCL Delphi

  1. #1
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut [TabControl] Afficher du texte en transparence
    Bonjour,

    Etant actuellement en train de "relooker" un TTabControl, je suis tombé sur un problème qui me laisse perplexe...

    En effet, ayant redessiner chaque onglet, je m'apercois que je n'arrive pas à afficher le texte en transparence. Celui-ci dessine un rectangle de la taille du texte de la couleur ClBtnFace (je suppose que c'est la couleur parent).
    Résultat, au milieu de chaque Tab, sous le texte, les effets visuels du canvas sont remplacés par un rectangle.



    voici mon code (j'utilise le gestionnaire d'événement OnDraw):
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    procedure TFrmStd.TabAfficheDrawTab(Control: TCustomTabControl;
      TabIndex: Integer; const Rect: TRect; Active: Boolean);
    var
      ColorBackup : TColor;
      S : string;
      R : TRect;
    begin
      S := TTabControl(Control).Tabs[TabIndex];
      R := Rect;
     
      // Dessine le canvas de la tab(Background)
      with TTabControl(Control) do begin
        if Active then
          DrawGradientHalf(Canvas,R,True)
        else begin
          DrawGradientHalf(Canvas,R,False,2);
        end;
     
        // Ajout du libellé de la tab
        OffsetRect(R, 2, 4);
        DrawText(Canvas.Handle, PChar(S), Length(S), R, DT_CENTER or DT_VCENTER);// -> problème car pas transparent
     
        // dessine l'arrière plan du TabControl
        R := TabRect(Tabs.Count-1);
        R.Left := R.Right;
        R.Right := ClientWidth;
        DrawGradientHalf(Canvas,R,True);
     
        // recolore la barre sous les tabs
        with Canvas do begin
          Pen.Color := RGB(150,150,150);
          Pen.Width := 4;
          MoveTo(0,ClientHeight-3);
          LineTo(ClientWidth,ClientHeight-3);
     
        end;
      end;
    Je ne vois vraiment pas comment résoudre ce problème (et ca fait pas très propre au niveau visuel).

    Avez-vous une idée la dessus ?

    merci,

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Je ne comprends pas trop ton code (pas tres complet) .
    Mais pour mettre le fond en transparence, je pense qu'il faut viser sur la propriété Canvas.Brush?style := BsClear;

    En espérant que cela puisse t'aide.

    Bonsoir.

  3. #3
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Merci,

    C'est vrai que mon code n'est pas très documenté... je vais arranger cela.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 24/01/2011, 08h36
  2. Réponses: 5
    Dernier message: 19/03/2006, 08h39
  3. Afficher du texte en couleur sous Borland C++ 4.02
    Par Cthulhu 22 dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 18/11/2003, 00h53
  4. afficher du texte
    Par Mau dans le forum OpenGL
    Réponses: 10
    Dernier message: 24/06/2003, 15h31
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

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