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 :

PageControl et orientation des tabsheets


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de KRis
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 232
    Par défaut PageControl et orientation des tabsheets
    Bonjour à tous,
    est il possible d'avoir ce type d'orientation avec les tabsheets d'un TPageControl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    -----------------------------------------------------
    MonTabSheet1 |                                       |
    -----------------------------------------------------|
    MonTabSheet2 |                                       |
    -----------------------------------------------------|
                 |                                       |
                 |                                       |
                 |                                       |
                 | ______________________________________|
    le tpLeft ne me suffit pas, puisque le texte des captions est orienté verticalement...?

    merci par avance,
    Christophe

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 119
    Par défaut
    Bonjour Kris,

    Le plus simple est de redessiner le DrawTab du PageControl.
    Tu dois mettre la valeur OwnerDraw à true dans l'inspecteur d'objet pour redéfinir le comportement du dessin
    Ensuite tu dois entrer le code suivant dans l'événement OnDrawTab
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      with (Control as TCustomTabControl), Canvas do
      begin
        TTabControl(Control).TabPosition:= tpLeft;
        TTabControl(Control).TabHeight  := 100;
        TTabControl(Control).TabWidth   := 25;
        TextOut(Rect.Left +5, Rect.Top +5, TTabSheet(PageControl1.Pages[TabIndex]).Caption);
      end;
    Bon code

    Jeankiki

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 202
    Par défaut
    Citation Envoyé par Jeankiki Voir le message
    Bonjour Kris,

    Le plus simple est de redessiner le DrawTab du PageControl.
    Tu dois mettre la valeur OwnerDraw à true dans l'inspecteur d'objet pour redéfinir le comportement du dessin
    Ensuite tu dois entrer le code suivant dans l'événement OnDrawTab
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      with (Control as TCustomTabControl), Canvas do
      begin
        TTabControl(Control).TabPosition:= tpLeft;
        TTabControl(Control).TabHeight  := 100;
        TTabControl(Control).TabWidth   := 25;
        TextOut(Rect.Left +5, Rect.Top +5, TTabSheet(PageControl1.Pages[TabIndex]).Caption);
      end;
    Bon code

    Jeankiki

    bonjour Jeankiki,

    J'ai expérimenté la solution proposée et j'ai eu le message suivant
    'Violation d'accès à l'adresse 58B7E95C dans le module 'comctl32.dll'; lecture de l'adresse 00000004'.
    Je voudrais s'avoir ce qui manque au code. on dirait que je dois déclaré quelque chose.

    merci pour ton aide.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 119
    Par défaut
    Bonjour Franck,

    Il semblerai que le problème vienne de Comctl32.dll et l'unité Comctrls de Delphi. Car avec Delphi 2009, ça fonctionne correctement sous Vista.
    Avec Delphi 7 sous Vista, il ne redessinne pas les Tabs correctement.
    Par contre, j'ai aussi le message d'erreur sous XP avec Delphi 7.
    Il faudrait voir s'il n'y a pas une màj de l'unité Comctrls.pas pour Delphi 7.

    Jeankiki

  5. #5
    Membre éclairé Avatar de petitprince
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2006
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juillet 2006
    Messages : 322
    Par défaut
    J'ai testé le code avec Delphi 7 Edition Personnel et sous WindowsXP, tout marche nikel

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 202
    Par défaut
    Citation Envoyé par petitprince Voir le message
    J'ai testé le code avec Delphi 7 Edition Personnel et sous WindowsXP, tout marche nikel
    C'est vraiment bizarre. Moi j'ai Delphi 7 Entreprise et XP et ça marche pas. STP, peux tu m'envoyer le fichier Comctl32.dll de ton delphi 7?

Discussions similaires

  1. Incompréhension du Show des tabsheet d'un pagecontrol
    Par BuzzLeclaire dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/03/2009, 13h59
  2. Orienter des points
    Par ToTo13 dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 08/09/2006, 10h03
  3. Impression : Orientation des pages
    Par vanitom dans le forum MFC
    Réponses: 13
    Dernier message: 28/07/2006, 11h35
  4. Orientation des tick labels
    Par dazhoid dans le forum MATLAB
    Réponses: 3
    Dernier message: 30/06/2006, 23h00

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