![]() |
TMemo + OEM_CHARSET ist beim Drucken unpräzise
Hallo,
ich habe ein TMemo mit dem Font 'Terminal' und als Charset'OEM_CHARSET' eingestellt. Ich möchte damit die alte MS-DOS Klötzchengrafik nachbilden, das gelingt mir auch: ![]() Nun möchte ich dieses Memo drucken
Delphi-Quellcode:
das Drucken klappt zwar, aber die Linien sind nicht mehr gleichmäßig ausgerichtet:
WITH Printer, canvas DO
BEGIN PrinterIndex := -1; orientation := poPortrait; Font.Name := 'Terminal'; Font.CharSet := OEM_CHARSET; Font.pitch := fpdefault; Font.style := []; Font.Size := 10; END; ... Printer.BeginDoc; FOR I := 0 TO Lst.Count - 1 DO BEGIN Printer.Canvas.TextOut(0, Line, Lst[I]); ... ![]() Ich wollte das TMemo als Bitmap speichern und drucken, leider ist das Blatt dabei leergeblieben. (Außerdem ist das bei 500-1000 Seiten doch a bisserl heftig, alles über bmps zu machen) Vielleicht gibt es auch noch eine andere Lösung mit Klötzchengrafik? Wer kann mir helfen? |
Re: TMemo + OEM_CHARSET ist beim Drucken unpräzise
Guten Morgen Armin,
es sollte nach deinen Vorstellungen funktionieren, wenn du auch den Pitch noch auf fpFixed einstellst.
Delphi-Quellcode:
Grüße vom marabu
object Memo: TMemo
Left = 184 Top = 364 Width = 229 Height = 149 Font.Charset = OEM_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Terminal' Font.Pitch = fpFixed Font.Style = [] ParentFont = False TabOrder = 29 end procedure TDemoForm.PrintButtonClick(Sender: TObject); var i: Integer; prn: TextFile; begin with Printer do Canvas.Font.Assign(Memo.Font); AssignPrn(prn); Rewrite(prn); with Memo do for i := 0 to Pred(Lines.Count) do WriteLn(prn, Lines[i]); CloseFile(prn); end; |
Re: TMemo + OEM_CHARSET ist beim Drucken unpräzise
Guten Morgen marabu,
danke für Deinen Tip, ich habe das inzwischen auch schon gemacht, leider ohne erfolg :-( Ich habe mal die Klötzchengrafik aus meinem Memo kopiert
SQL-Code:
Wenn im Memo
Netzwerk 1 Pumpe P7 oder P16 Hand ein
ÚÄÄÄ¿ ÄE68.0 ÄÄp´ & ³ ÄE36.7 ÄÄp´ ³ ÄE70.2 ÄÄp´ ³ ÚÄÄÄ¿ ³ ³ ÄE109.3 ÄÄp´>=1³ ³ ³ ÚÄÄÄÄÄÄ¿ ÄE10.1 ÄÄp´ ³ÄÄÄÄij ³ÄĿij = ³ ÄM177.4 +ÄÄÄ+ +ÄÄÄ+ +ÄÄÄÄÄÄ+ E 68.0 = E68.0 M10.094 Pumpe P7 BEFEHL EIN +3P40ÄA3.0 E 36.7 = E36.7 RM.PRpDUKTVENTIL PRpD.7/16 ZU 253.2 S13 E 70.2 = E70.2 M10.095 Pumpe P16 BEFEHL EIN +3P40ÄK16 E 109.3 = E109.3 RM.DpSIERV.PRpD.7/16/17 KADY 1 35.1 S13 E 10.1 = E10.1 RM.DpSIERV.PRpD.7/16/17 KADY 2 35.2 S13 M 177.4 = M177.4 ENTLEERPUMPE PRpD.7/16 HANDBETRIEB 3.1
Delphi-Quellcode:
eingestellt ist, wird die Grafik (wie im alten Dos-Stil) korrekt angezeigt, wenn man sie mit Copy&Paste einfügt.
Font.Charset = OEM_CHARSET
Font.Color = clWindowText Font.Height = -16 Font.Name = 'Terminal' Font.Pitch = fpFixed Jeder Versuch diese Grafik auszudrucken, scheitert an der ungenauen Darstellung am Papier. |
Re: TMemo + OEM_CHARSET ist beim Drucken unpräzise
Kann es sein, dass du die Ausgabe auf einem Tintenstrahldrucker machen willst? Wenn du keinen Seitendrucker verwendest, dann muss der Drucker wegen der fehlenden Kalibrierung am Zeilenanfang im unidirektionalen Modus betrieben werden.
Grüße, marabu |
Re: TMemo + OEM_CHARSET ist beim Drucken unpräzise
Nein,
ich benutzte als Vorschau "FinePrint" als virtuelen Drucker, und drucke danach auf einen Tally 9412 Laserdrucker (o.ä.). Ich habe nun ein Workaround gemacht, in dem ich Quickreport 3 die Ausgabe mit dem Terminalfont überlasse, das funkt gar nicht so schlecht :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz