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

Delphi Discussion :

mettre en gras le caption d'un onglet [FAQ]


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 141
    Par défaut mettre en gras le caption d'un onglet
    Bonjour,
    je souhaiterais mettre en gras le caption d'un onglet d'un pagecontrol. les autres restant en normal.
    Tabsheet[1].Font.Style :=[fsbold];
    met tout le contenu de l'onglet en gras alors que je ne voudrais que le caption
    merci pour toute aide
    Seb

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    associe ce code a OnDrawTab
    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
     
    //*** Ne pas oublier de mettre OwnerDraw a TRUE! ***
    procedure TfrmMain.PageControl1DrawTab(Control: TCustomTabControl;
      TabIndex: Integer; const Rect: TRect; Active: Boolean);
    begin
        with Control as TPageControl do
        begin
            if Active=TRUE then //TabIndex=PageControl1.ActivePageIndex then
            begin
                Canvas.Font.Style:=[fsBold];
            end
            else
            begin
                Font.Style:=[];
            end;
            Canvas.Font.Color := clBlack;
            Canvas.FillRect(Rect);
            Canvas.TextOut(Rect.Left+2,Rect.Top+2,Pages[TabIndex].Caption);
        end;
     
    end;
    Il ne Faut pas oublier de mettre OwnerDraw=TRUE de l'objet
    PageControl1.....

    il faudrait ajouter à ce code le support pour les images...

    J'espère le tout conforme.
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 141
    Par défaut
    mon composant pagecontrol se crée dynamiquement. peux tu m'indiquer comment associer cette procédure à ce composant ?

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    après la creation, associe la procedure et met le OwnerDraw à true...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        // Associe le code pour dessiner les onglets
        PageControlDynamic.OnDrawTab:=PageControl1DrawTab;
        // Spécifie que c'est nous qui dessinons les onglets
        PageControlDynamic.OwnerDraw:=TRUE;
    Voilà
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 141
    Par défaut
    merci

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 490
    Par défaut
    salut

    attention si tu te sert du TabVisible tu risque d'avoir des surprise l'index ne pointera pas sur le bon caption

    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
    Type
      TMPageControl = class (TPageControl)
      end;
     
     
    procedure TMaform.pagecontrol1DrawTab(Control: TCustomTabControl;
      TabIndex: Integer; const Rect: TRect; Active: Boolean);
    var
      TabText: string;
      P: TPageControl;
      OutRect : TRect;
    begin
     p :=   Control as TPageControl ;
     TabText := TMPageControl(P).Tabs[TabIndex];
     OutRect := Rect;
     InflateRect (OutRect, -3, -3);
     OutRect.Left := OutRect.Left + 3;
     if Active Then
     begin
       P.Canvas.Font.Style:=[fsBold];
     end
     else
     begin
       P.Canvas.Font.Style:=[];
     end;
     DrawText (Control.Canvas.Handle,
        PChar (ExtractFileName (TabText)),
        Length (ExtractFileName (TabText)),
        OutRect, dt_Left or dt_SingleLine or dt_VCenter);
    end;
    @+ Phil

Discussions similaires

  1. Réponses: 8
    Dernier message: 02/02/2009, 14h11
  2. [VB]SSTAB : Mettre en gras le titre de l'onglet sélectionné
    Par pcvesoul dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/02/2006, 12h34
  3. [FLASH MX] Mettre en gras dans ce code
    Par celina5880 dans le forum Flash
    Réponses: 6
    Dernier message: 15/01/2006, 15h16
  4. mettre en gras & radio bt
    Par MANU_2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 23/09/2005, 08h29

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