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 avec titres de pages orientés horizontalement ?


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 107
    Par défaut PageControl avec titres de pages orientés horizontalement ?
    Bonsoir!

    J'aimerai savoir s'il y a moyen d'orienter HORIZONTALEMENT les titres de pages d'un TPageControl qui a son TabPosition à tpLeft ?

    Merci !

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 101
    Par défaut
    Faut redessiner le texte, c'est l'orientation voir lfEscapement et lfOrientation

    https://www.developpez.net/forums/d1...l/#post6516335

    Après tout c'est l'inverse, on veut généralement écrire verticalement quand c'est horizontal, tu veux juste l'inverse, faut trouver l'angle approprié
    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

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 107
    Par défaut
    Je n'ai jamais travaillé avec C++ ...
    j'ai essayé de convertir le code en Delphi, mais il reste quelques modifications
    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
    Var
    OldMode : integer;
    OldFontHandle, NewFontHandle : HGDIOBJ;
    ParamFont : LOGFONT;
    begin
       if (GetObject(Control->Canvas->Font->Handle, sizeof(ParamFont), &ParamFont) > 0) then
       begin
          OldMode := SetGraphicsMode(Control->Canvas->Handle, GM_ADVANCED);
          try
             if (GetGraphicsMode(Control->Canvas->Handle) = GM_ADVANCED) then
                begin
                   ParamFont.lfEscapement := -450; // tenths of degrees, angle of Text
                   ParamFont.lfOrientation := 450; // tenths of degrees, angle of Letters
                end
             else
                ParamFont.lfEscapement := -450; // tenths of degrees, angle of Text and Letters
             NewFontHandle := CreateFontIndirect(&ParamFont);
             try
                OldFontHandle := SelectObject(Control->Canvas->Handle, NewFontHandle);
                   try
                      DrawText(Control->Canvas->Handle, ((TTabControl*)Control)->Tabs->Strings[TabIndex].c_str(), -1, (LPRECT)&Rect, 0);
                   finally
                      SelectObject(Control->Canvas->Handle, OldFontHandle);
                   end;
             finally
                DeleteObject(NewFontHandle);
             end;
          finally
             SetGraphicsMode(Control->Canvas->Handle, OldMode);
          end;
       end;
    end;

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 101
    Par défaut
    -> c'est . .
    & c'est @ ou rien selon le cas .
    (Class*)Objc'est Class(Obj) .

    Sinon, j'ai aussi ces codes :
    Quel style est utilisé pour les onglets ? redessin complet d'un onglet style corrigé un bug de XE2 pour la gestion de l'ImageIndex voir AngleTextOut
    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 confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 107
    Par défaut
    Rebonjour !

    j'étais tellement occupé, je viens d'avoir le temps de lire votre réponse...

    Je continue avec la conversion;
    je compte m'assurer d'abord de son bon fonctionnement,
    avant d'apporter les modifications nécessaires par rapport à mon besoin:

    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
    Var
    OldMode : integer;
    OldFontHandle, NewFontHandle : HGDIOBJ;
    ParamFont : LOGFONT;
    begin
       if (GetObject(Control.Canvas.Font.Handle, sizeof(ParamFont), @ParamFont) > 0) then
       begin
          OldMode := SetGraphicsMode(Control.Canvas.Handle, GM_ADVANCED);
          try
             if (GetGraphicsMode(Control.Canvas.Handle) = GM_ADVANCED) then
                begin
                   ParamFont.lfEscapement := -450; // tenths of degrees, angle of Text
                   ParamFont.lfOrientation := 450; // tenths of degrees, angle of Letters
                end
             else
                ParamFont.lfEscapement := -450; // tenths of degrees, angle of Text and Letters
             NewFontHandle := CreateFontIndirect(ParamFont);
             try
                OldFontHandle := SelectObject(Control.Canvas.Handle, NewFontHandle);
                   try
                      DrawText(Control.Canvas.Handle, (TTabControl(Control).Tabs.Strings[TabIndex].str(), -1, (LPRECT)@Rect, 0);
                   finally
                      SelectObject(Control.Canvas.Handle, OldFontHandle);
                   end;
             finally
                DeleteObject(NewFontHandle);
             end;
          finally
             SetGraphicsMode(Control.Canvas.Handle, OldMode);
          end;
       end;
    end;
    prière de m'indiquer ce qu'il faut modifier au niveau de la ligne DrawText.
    et aussi de vérifier s'il n ya pas d'erreurs concernant Begin..End, Try..Finally par rapport aux acclolades de C++.

    Merci.

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 101
    Par défaut
    Je suis reparti de la version C++

    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    DrawText(Control->Canvas->Handle, ((TTabControl*)Control)->Tabs->Strings[TabIndex].c_str(), -1, (LPRECT)&Rect, 0);

    vers la version Delphi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DrawText(Control.Canvas.Handle, PChar(TTabControl(Control).Tabs.Strings[TabIndex]), -1, Rect, 0);
    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

Discussions similaires

  1. cacher les titres des pages dans un pageControl
    Par aimer_Delphi dans le forum Delphi
    Réponses: 5
    Dernier message: 05/10/2021, 09h11
  2. Réponses: 2
    Dernier message: 04/07/2007, 14h20

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