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 :

Comment écrire verticalement ?


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 169
    Points : 68
    Points
    68
    Par défaut Comment écrire verticalement ?
    Bonjour,

    J'essaie d'écrire un texte de façon vertical, pour ce j'utilise un Label, mais je n'arrive pas à le mettre de façon horizontal

    Pouvez-vous me dire ce qu'il faut faire pour avoir le texte écrit verticalement et non horizontalement ?

    Merci beaucoup

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    1ère solution
    Une astuce (si ton label ne contient un seul mot) :
    - tu sépare chaque lettre par un espace,
    - tu met AutoSize à false
    - tu redimentionne ton Label pour qu'il fasse une lettre de large
    - Tu met WordWrap à true

    2ème solution
    Sinon tu clique droit sur ta Form -> Voir comme texte

    Tu cherche ton label et tu ajoute #10#13 (saut de ligne) entre chaque caractère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      object Label1: TLabel
        Left = 280
        Top = 312
        Width = 6
        Height = 65
        Caption = 'L'#10#13'A'#10#13'B'#10#13'E'#10#13'L'
      end;
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 169
    Points : 68
    Points
    68
    Par défaut
    merci je vais essayer

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 169
    Points : 68
    Points
    68
    Par défaut
    la second technique fonctionne très bien merci

    mais es-ce que je peux aussi écrire de façon vertical mais que les lettres soient également tourné comme si j'écrivais sur le côté droit de ma feuille de façon horizontal càd comme si j'écrivais de bas vers le haut et que j'avais besoin de tourné ma feuille pour pouvoir lire ce qui est écrit ?

  5. #5
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 14
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Il y a de nombreux sources de disponibles

    Je crois qu'il existe cette option dans la géniale bibliothèque gratuite JEDI
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  6. #6
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    A ma connaissance ce n'est pas possible avec les composants standard de Delphi...

    Mais je peux me tromper, et dans ce cas là je veux bien savoir aussi comment faire!
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 169
    Points : 68
    Points
    68
    Par défaut
    merci, je vais tenter de trouver qlqchose pour ce cas...

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Si tu veux, avec les trucs standards de Delphi, écrire du texte retourné sur la verticale, il suffit de le dessiner sur le canvas du TLabel. Tu peux trouver ici un bout de code à cet effet (voir mon message du 22/10/2008, 16h59) :
    http://www.developpez.net/forums/d61...-ombre-canvas/

    Permet de dessiner dans un canvas du texte pouvant au choix être incliné ou non, et ombré, ou en relief, ou à plat et bordé ou non d'un liseret de contour,
    en couleurs unies ou par transfert de motifs texturés provenant de BitMap(s) pouvant être étirés. Donc permet aussi de dessiner un texte simple et vertical sans utiliser toutes les options. Testé sous Windows 98 et Delphi-5 donc marche avec des configurations plus récentes.

    Dans le code exemples d'utilisation, suffit de remplacer "image1.canvas" par label1.canvas" pour commencer.

    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 169
    Points : 68
    Points
    68
    Par défaut
    c'est gentil mais je n'arrive pas à accéder à ton lien, apparement il est privé

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 169
    Points : 68
    Points
    68
    Par défaut
    ok merci

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut Ecriture à la verticale sur le canvas d'un TLabel
    Salut,

    je n'arrive pas à accéder à ton lien, apparement il est privé
    ... Bizarre.

    Essayes donc d'y accéder :
    - soit via la Fonction "Chercher" avec le mot clef "InsererTexteDans" ou avec "texte ombré",
    - soit en recherchant dans la liste des discussions celle du 13/09/2008, 21h40 intitulée [QR] Comment dessiner un texte ombré sur un Canvas ?

    Mais en prévision du cas où tu n'y arriverais pas, voiçi un extrait du code, la procédure qui permet au-moins de dessiner du texte verticalement sur le canvas du Tlabel sans ombre dégradée ni enluminures autres que celles fournies par la Font associée au TLabel qui doit être scalable c.à.d TrueType :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure CanvasAffiTexteIncline(C : TCanvas; X,Y: integer; DD : word; S: String);
    var       FonteRec : TLogFont;
              VieuFonteHandle,         // Poignée ancienne fonte
              NouvFonteHandle : HFONT; // Poignée fonte temporaire
    begin     GetObject(C.Font.handle,SizeOf(FonteRec),Addr(FonteRec));
              FonteRec.lfEscapement:=DD; // modif angle
              NouvFonteHandle:=CreateFontIndirect(FonteRec); // nelle poignée/ancienne
              VieuFonteHandle:=SelectObject(C.Handle,NouvFonteHandle); //Sauve ancienne
              C.TextOut(X,Y,S); // Affiche texte
              NouvFonteHandle:=SelectObject(C.Handle,VieuFonteHandle); // Restitue fonte
              DeleteObject(NouvFonteHandle); // Del du temporaire
    end; // CanvasAffiTexteIncline(
    ... et code d'uitilisation (où, pour le fun j'ai ajouté une ombre plate) :
    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
    procedure TForm1.FormActivate(Sender: TObject);
    //        Pour dessin d'un texte à la verticlale :
    var       X,Y : integer; Texte : string; Inclinaison : word;
    begin     Texte:='Ecriture verticale';
              with Label2 do // Préparation du Label (Fonte, par exemple Arial, à déclarer dans l'Inspecteur d'Objets
              begin caption:='';
                    Inclinaison:=900; //<-- en Dixièmes de Degrés
                    width:=2+canvas.TextHeight(Texte);
                    height:=2+canvas.TextWidth(Texte);
                    X:=2; Y:=height;
                    upDate;
              end;
              Label2.Canvas.Font.color:=clSilver; //<-- On ajoute une petite ombre portée plate
              CanvasAffiTexteIncline(label2.canvas, X,Y, Inclinaison, Texte);
              Label2.Canvas.Font.color:=clRed;    //<-- Une couche de peinture pour le Texte
              CanvasAffiTexteIncline(label2.canvas, X-2,Y-2, Inclinaison, Texte);
    end;
    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  12. #12
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par savoir Voir le message
    c'est gentil mais je n'arrive pas à accéder à ton lien, apparement il est privé
    moi aussi, j'ai pas pu accéder, pour le code sa marche pas chez moi , je veux l'utilise pour écrire sur le canvas d'un TStringGrid
    merci
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  13. #13
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Alors Edam, tu ressuscite une vieille discussion ... pour le TStringGrid, tu dois le faire durant les OnDrawCell ...

    EDIT: Mais chez moi non plus ça ne passe pas, Win XP et D7

    Sinon, le sujet étant dans la section "Contribuez", c'est normal, c'est une zone limitée d'accès ....
    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

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

Discussions similaires

  1. Comment écrire un fichier texte au format MS-DOS ?
    Par fredfred dans le forum Langage
    Réponses: 9
    Dernier message: 20/01/2005, 09h00
  2. écrire verticalement
    Par NikauSenpeï dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 17/01/2005, 17h53
  3. [VB.NET] comment écrire du texte avec opengl?
    Par ero_senin dans le forum OpenGL
    Réponses: 2
    Dernier message: 17/01/2005, 13h34
  4. [JAR] Comment écrire dans un fichier properties dans un jar
    Par Alec6 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 05/10/2004, 15h16
  5. Comment écrire explicitement en sortie d'un job OEM ?
    Par zestrellita dans le forum Entreprise Manager
    Réponses: 11
    Dernier message: 11/03/2004, 09h36

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