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

API, COM et SDKs Delphi Discussion :

imprimer un text vertical [FAQ]


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Mai 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1
    Par défaut imprimer un text vertical
    bonjour t le monde
    j'ai une question concérnant la possibilité d'imprimer un text vertical en quickreport
    mérci

  2. #2
    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
    Par défaut
    Salut,

    possibilité d'imprimer un text vertical en quickreport
    ... QuickReport : jamais utilisé.
    ... Par contre sous Delphi voici un bout de code qui est utilisable pour tracer un texte verticalement ou incliné sur n'importe quel canvas passé en paramètre et où DD est l'angle d'inclinaison en Dixièmes de Degré :

    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
    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Par défaut
    J'ai essayé ton code Gilbert, ça marche, il y'a cependant un seul problème le texte affiché est vraiment petit je ne sais pas pourquoi, j'ai augmenter la taille de la font mais sans résultat :.
    Ce problème je le rencontre uniquement avec ta procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CanvasAffiTexteIncline(C,100,100, 900, 'Hello'); //Texte trop petit
    .
    Par contre avec un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Canvas.TextOut(500,500,'Bonjour');// Texte en taille normale
    j'ai pensé que peut-être que ça serait un problème de résolution, mais j'ai pas pu réglé ça, donc si t'a la solution ça serait bien.
    Merci.

  4. #4
    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
    Par défaut
    Salut,

    J'ai testé chez moi avec C.Font.Size:=14; puis 18, puis 22 et ça affiche effectivement en 14, puis 18, puis 22.

    Du coup je ne sais pas ce qui se passe chez toi.

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

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Par défaut
    C'est bon Gilbert j'ai pu réglé le problème que je me suis créé moi-même en fait, lors de l'appel de la procédure j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var
                  C:TCanvas;
    C:=TCanvas.Create;
    CanvasAffiTexteIncline(C,1000,500, 900, 'Hello');
    alors qu'il fallait faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CanvasAffiTexteIncline(Printer.Canvas,1000,500, 900, 'Hello');
    Apparement le premier Canvas était un autre type de canvas pas celui de l'impression et qui a une résolution différante (plus grande) et c'est ça qui a causé le conflit de taille de la police.
    Merci Gilbert pour ce code très interréssant.

Discussions similaires

  1. QReport, Imprimer un texte en vertical
    Par kurkaine dans le forum C++Builder
    Réponses: 12
    Dernier message: 13/09/2006, 13h43
  2. VB6] imprimer le texte afficher dans une picturebox
    Par Persons dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/08/2004, 11h15
  3. [C#] Affichage de texte vertical...
    Par AntiSAL dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/06/2004, 14h46
  4. Canvas et Texte vertical
    Par ulysse66x dans le forum Composants VCL
    Réponses: 8
    Dernier message: 01/02/2004, 16h46
  5. Imprimer fichier texte
    Par Freeze dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/11/2003, 11h37

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