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 :

[Delphi7] Impression spécifique et dysfonctionnement si utilisation d'un TAlignment(TControl()


Sujet :

Delphi

  1. #1
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut [Delphi7] Impression spécifique et dysfonctionnement si utilisation d'un TAlignment(TControl()
    Bonjour

    J'avais déjà posté cette demande, mais mal formulée ; c'est pourquoi je la reformule.

    En plus, tout développeur se doit d'être curieux et d'éviter de contourner le problème

    Voilà, je teste un code qui fonctionne super.

    Sauf en cas d'utilisation d'un TAlignement() afin de par exemple centrer une portion de texte sélectionnée, hé bien l'impression découlant de cette sélection se révèle à l'impression totalement absente !

    Exemple d'appel pour centrer une portion texte sélectionnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TRTF_Editor.CenterAlignBtnClick(Sender: TObject);
    begin
        if FUpdating then Exit;
        Editor.Paragraph.Alignment := TAlignment(TControl(Sender).Tag);
    end;
    Je m'appuie sur le code fourni dans delphi7/demo/Richedit = un éditeur RTF.

    Je ne donne pas ce code car tout le mode doit le posséder.

    Bref, voici ma question :

    En utilisant ce code précis et assez classique :

    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
     
    // https://titanwolf.org/Network/Articles/Article?AID=52b29ea9-b3ab-43ab-ae76-7acd79548961#gsc.tab=0
    procedure RichEditToCanvas(RichEdit: TRichEdit; Canvas: TCanvas; PixelsPerInch: Integer);
    var
    	ImageCanvas: TCanvas;
    	fmt: TFormatRange;
    begin
    	ImageCanvas := Canvas;
    	with fmt do	
    	begin
    		hdc:= ImageCanvas.Handle;
    		hdcTarget:= hdc;
    		rc:= Rect(0, 0,
    		ImageCanvas.ClipRect.Right * 1440 div PixelsPerInch,
    		ImageCanvas.ClipRect.Bottom * 1440 div PixelsPerInch);
    		rcPage:= rc;
    		chrg.cpMin := 0;
    		chrg.cpMax := RichEdit.GetTextLen;
    	end;
     
    	SetBkMode(ImageCanvas.Handle, TRANSPARENT);
    	RichEdit.Perform(EM_FORMATRANGE, 1, Integer(@fmt));
    	RichEdit.Perform(EM_FORMATRANGE, 0, 0);
    end;
     
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    	RichEditToCanvas(RichEdit1, Image1.Canvas, Self.PixelsPerInch);
    	Image1.Refresh;
    end;
    Que peut bien t-il se passer pour que cette observation se produise ?

    Oui je sais, si j'utilise cet appel plus classique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if PrintDialog.Execute then Editor.Print(path);
    Tout se passe bien, mais ma demande est autre et se situe sur la procédure présentée ci-dessus.

    Merci d'avance de toute idée,

    DS7

  2. #2
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut Précisions...
    Bonjour,

    Bon... J'ai eu cette idée géniale (si, si) ; celle de créer un fichier RTF directement sur WordPad de Windows.

    Ce fichier comporte un entête CENTRÉ avec la commande idoine et quelques lignes au dessous est ajouté un petit texte tout simple.

    En imprimant ce fichier à l'aide du code sus-mentionné : l'observation est rigoureusement identique à celle que j'avais en créant un fichier sur mon éditeur RTF !

    C'est-à-dire que l'entête centré est INVISIBLE, contrairement au petit texte au dessous.

    CQFD : API Windows en jeu

    DS7

Discussions similaires

  1. Envoyer une impression vers une imprimante réseau sous DOS
    Par atasekpo dans le forum Administration
    Réponses: 3
    Dernier message: 28/06/2010, 15h58
  2. FOP 0.94 envoie impression vers imprimante réseau
    Par mileau dans le forum Documents
    Réponses: 1
    Dernier message: 03/03/2008, 17h13
  3. Impression vers une imrimante qui n'est pas par défaut
    Par abdelghani_k dans le forum Delphi
    Réponses: 5
    Dernier message: 22/05/2007, 12h07
  4. Réponses: 12
    Dernier message: 05/05/2006, 09h29
  5. Impression vers PDF
    Par cjacquel dans le forum MFC
    Réponses: 2
    Dernier message: 21/03/2006, 16h22

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