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 :
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 :
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 :
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
Partager