Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Beim Drucken eines richtext die Schriftgrösse vom Richtext (https://www.delphipraxis.net/110445-beim-drucken-eines-richtext-die-schriftgroesse-vom-richtext.html)

Power-Poler 18. Mär 2008 08:08


Beim Drucken eines richtext die Schriftgrösse vom Richtext
 
hi, ich bins nochmal, nachdem ein eines Problem jetzt behoben ist, stehe ich jetzt schon wider auf dem Schlauch :wall:
Ich habe einen Richtext, der in bestimmten zeilen eine andere Schriftgrösse hat, wie in anderen. Dies möchte ich jetzt aber 1 zu 1 zu Papier bringen, und nicht alles in 11 wie in meinem code
Hier der Druck code, den ich verwände:
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var Lines: Integer;
LineHeight: Integer;
ActMemoLine: Integer;
Pages: Integer;
PageLine: Integer;
begin
if PrintDialog1.Execute then begin
Printer.BeginDoc;
Printer.Canvas.Font.Name := 'Arial';
Printer.Canvas.Font.Size := 11;
Lines := Printer.PageHeight div Printer.Canvas.TextHeight('Dummy');
LineHeight := Printer.Canvas.TextHeight('Dummy');
ActMemoLine := 0;



for Pages := 1 to (RichEdit1.Lines.Count div Lines) + 1 do
begin
     for PageLine := 0 to Lines - 1 do
     begin

          if ActMemoLine < RichEdit1.Lines.Count then
          begin
          Printer.Canvas.TextOut(150, PageLine * LineHeight + 150, Richedit1.Lines[ActMemoLine]);
          end
          else
          begin
          Printer.EndDoc;
          exit;
          end;
     Inc(ActMemoLine);
     end;
if ActMemoLine < Richedit1.Lines.Count then
Printer.NewPage;
end;
Printer.EndDoc;
end;
end;
Wo muss ich jetzt zeilen löschen, und neue einfügen, damit er die schriftgrössen der zeilen übernimt?

Danke im Voraus
MfG
Power-Poler

ulhau 18. Mär 2008 17:37

Re: Beim Drucken eines richtext die Schriftgrösse vom Richte
 
Hallo!

1. Möchtest Du eine eigene Druckroutine erstellen?
2. Oder kennst du die Procedure "Print" von RichEdit noch nicht?

Zu erstens: Hier must du jedes Wort eizeln selektieren und die zugehörigen Textattribute ermitteln.
Zu zweitens: Hier reicht der Befehl
Delphi-Quellcode:
 RichEdit1.Print('DokumentName');
Wobei der RichEdit1 Inhalt auf dem aktuellen Systemdrucker ausgedruckt wird. Der Dokumentname wird in der Druckerwarteschlange angezeigt.

Kann's das gewesen sein?

Tschüsss!

Power-Poler 20. Mär 2008 08:21

Re: Beim Drucken eines richtext die Schriftgrösse vom Richte
 
Danke, aber ich habe es jetzt anderes gelöst.

patti 20. Mär 2008 09:58

Re: Beim Drucken eines richtext die Schriftgrösse vom Richte
 
Dann wäre es doch schön, wenn du deinen Lösungsweg kurz zeigen würdest, falls andere mal das gleiche Problem haben sollten ;-)

Power-Poler 20. Mär 2008 10:57

Re: Beim Drucken eines richtext die Schriftgrösse vom Richte
 
Du wilst doch nur wisen, wie ich es gemacht habe, oder :wink:
Naja, ok:
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin
richedit1.Lines.savetofile('Datei.txt');
if printdialog1.execute
then richedit1.print('datei.txt');
end;
3 Zeilen :mrgreen:

patti 20. Mär 2008 12:01

Re: Beim Drucken eines richtext die Schriftgrösse vom Richte
 
Das ist ja die Lösung, die ulhau geschrieben hat.
Übrigens: Ich kenne die Methode "Print" vom RichEdit schon ;-) Habe nur gedacht, dass du für diejenigen, die das gleiche Problem haben, mal deine Lösung zeigst, weil du geschrieben hast

Zitat:

Zitat von Power-Poler
Danke, aber ich habe es jetzt anderes gelöst.

Hätte ja sein können, dass du irgendwas besonderes gemacht hast, was anderen vielleicht geholfen hätte ;-)

Patti

Power-Poler 20. Mär 2008 12:04

Re: Beim Drucken eines richtext die Schriftgrösse vom Richte
 
Jo, jetzt sehe ich es, aber die von ulhau habe ich nicht richtig verstanden, weil das save vornedran nicht war, und weil der filetyp gefehlt hat. Das er das gemeint hat, was ich später noch woanderes gefunden habe , habe ich garnicht gesehen. :oops:

patti 20. Mär 2008 12:07

Re: Beim Drucken eines richtext die Schriftgrösse vom Richte
 
Du musst übrigens die Datei nicht unbedingt vorher speichern. Und das "DokumentName" bei

Delphi-Quellcode:
RichEdit1.Print('DokumentName');
ist kein Pfad zu einer Datei. Es handelt sich dabei um den Namen des Druckauftrages. Wenn du in die Warteschlange deines Druckers schaust, wo die ganzen aktuellen Druckaufträge aufgelistet sind, dann ist dies der Name, der dort angezeigt wird. Du musst also nicht speichern und als "DokumentName" kannst du irgendeinen Titel angeben ;-)

Patti

Power-Poler 20. Mär 2008 12:10

Re: Beim Drucken eines richtext die Schriftgrösse vom Richte
 
Achso, Danke, dann muss ich mich auch nicht mehr fragen, wo er dieses file dan hintut, und ob es irgewo als datenmüll rumgeistert :mrgreen:

patti 20. Mär 2008 12:12

Re: Beim Drucken eines richtext die Schriftgrösse vom Richte
 
Stimmt ;-) Datenmüll ist immer schlecht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz