AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TMemo + OEM_CHARSET ist beim Drucken unpräzise
Thema durchsuchen
Ansicht
Themen-Optionen

TMemo + OEM_CHARSET ist beim Drucken unpräzise

Ein Thema von APP · begonnen am 28. Sep 2006 · letzter Beitrag vom 29. Sep 2006
Antwort Antwort
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#1

TMemo + OEM_CHARSET ist beim Drucken unpräzise

  Alt 28. Sep 2006, 21:21
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:

http://www.a2p.at/Lager/unbenannt1.JPG

Nun möchte ich dieses Memo drucken
Delphi-Quellcode:
    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]);
...
das Drucken klappt zwar, aber die Linien sind nicht mehr gleichmäßig ausgerichtet:

http://www.a2p.at/Lager/unbenannt.JPG


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?
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: TMemo + OEM_CHARSET ist beim Drucken unpräzise

  Alt 29. Sep 2006, 06:57
Guten Morgen Armin,

es sollte nach deinen Vorstellungen funktionieren, wenn du auch den Pitch noch auf fpFixed einstellst.

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: TMemo + OEM_CHARSET ist beim Drucken unpräzise

  Alt 29. Sep 2006, 07:17
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:
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
Wenn im Memo
Delphi-Quellcode:
Font.Charset = OEM_CHARSET
  Font.Color = clWindowText
  Font.Height = -16
  Font.Name = 'Terminal
  Font.Pitch = fpFixed
eingestellt ist, wird die Grafik (wie im alten Dos-Stil) korrekt angezeigt, wenn man sie mit Copy&Paste einfügt.
Jeder Versuch diese Grafik auszudrucken, scheitert an der ungenauen Darstellung am Papier.
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: TMemo + OEM_CHARSET ist beim Drucken unpräzise

  Alt 29. Sep 2006, 07:42
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
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: TMemo + OEM_CHARSET ist beim Drucken unpräzise

  Alt 29. Sep 2006, 10:46
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
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:14 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