Druckersteuerzeichen in einem String

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
niederrheiner
Beiträge: 87
Registriert: Sa 19. Jan 2008, 17:21
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Rheinberg

Druckersteuerzeichen in einem String

Beitrag von niederrheiner »

Hallo an Alle,
nach langer Suche bin ich nicht wirklich fündig geworden nach der Antwort für "wie bringe ich ein Druckersteuerzeichen in einen String?".
Ich möchte das folgende Steuerzeichen in eine String einfügen

Code: Alles auswählen

\033[1m
Ich schaffe es LF und CR mit #10 bzw. #13 einzufügen. Aber wenn ich naiv versuche

Code: Alles auswählen

#27#91#49#109
einzutragen, werden die entsprechenden ASCCI-Zeichen gedruckt.
Wie muß ich nun die obige Steuersequenz in den String einfügen, damit der Drucker sie auch als Steuersequenz erkennt und nicht druck?

Hat jemand von einen Hinweis oder Tipp?

Bis dann ...
MfG
Günter

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Druckersteuerzeichen in einem String

Beitrag von Antrepolit »

Generell stünde eher die Frage im Raum, warum man denn überhaupt noch Drucksteuerzeichen verwenden sollte?
Grafisches Drucken etc. ist mit Lazarus schon lange kein Problem mehr. Da ist es schon komplizierter, die System-Codepage formatierten Steuerzeichen richtig an den Drucker zu senden.

Ich würde mir an deiner Stelle also mal kurz überlegen, ob man mit einem Printer-Canvas nicht schneller ans Ziel käme.
Grüße, Antrepolit

care only if your os is really burning

niederrheiner
Beiträge: 87
Registriert: Sa 19. Jan 2008, 17:21
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Rheinberg

Re: Druckersteuerzeichen in einem String

Beitrag von niederrheiner »

Halo Antrepolit,
danke für Deine Antwort. Printer-Canvas kenne ich noch nicht, deshalb kann ich nicht beurteilen ob es für meinen Fall geeignet ist. Denn ich möchte einzelne Zeichenfolgen in einem String unterschiedlich drucken, z.B Fett oder Kursiv. Aus diesem Grund möchte ich mit Druckersteuercodes arbeiten.

Also so:

Code: Alles auswählen

string := 'normaler Text' + steuerzeichen + 'Fett gedruckter Text'
Kann Printer-Canvas so etwas?

Bis dann ...
Mfg
Günter

Benutzeravatar
theo
Beiträge: 10856
Registriert: Mo 11. Sep 2006, 19:01

Re: Druckersteuerzeichen in einem String

Beitrag von theo »

Ja, wie ein normaler Canvas. Die Positionen musst du aber selber berechnen.

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: Druckersteuerzeichen in einem String

Beitrag von Heinrich Wolf »

Hi,

hier nur die wichtigsten Befehle zum Drucken unter Windows (nicht Syntax geprüft):

Code: Alles auswählen

uses Printer;
var w : Integer;
     s : String;
begin
  Printer.BeginDoc;
  s := 'normaler Text ';
  Printer.Canvas.TextOut(0, 0, s);
  w := Printer.Canvas.TextWidth(s);
  Printer.Canvas.Font.Style := [fsBold];
  s := 'fett gedruckter Text';
  Printer.Canvas.TextOut(0, w, s);
  Printer.EndDoc;
end.

niederrheiner
Beiträge: 87
Registriert: Sa 19. Jan 2008, 17:21
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Rheinberg

Re: Druckersteuerzeichen in einem String

Beitrag von niederrheiner »

Hallo an Alle,
danke für Eure Antworten. Ich werde mich in das Thema Canvas einarbeiten und die Tipps ausprobieren. Canvas ist für mich noch ein Buch mit sieben Siegel. Hoffe, am Wochenende einige Siegel zu brechen.

Bis dann ...
MfG
Günter

niederrheiner
Beiträge: 87
Registriert: Sa 19. Jan 2008, 17:21
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Rheinberg

Re: Druckersteuerzeichen in einem String

Beitrag von niederrheiner »

Hallo Heinrich,
läßt sich die Druckausgabe in der Testphase auf den Bildschirm umleiten? Wenn ja, wie.

Bis dann ...
MfG
Günter

Benutzeravatar
theo
Beiträge: 10856
Registriert: Mo 11. Sep 2006, 19:01

Re: Druckersteuerzeichen in einem String

Beitrag von theo »

TCanvas ist die Basis für Printer und Screen.

Also mach einfach eine Prozedur, die auf Canvas zeichnet, dann kannst du die mal mit Printer.- und mal mit Form.Canvas aufrufen.
Zum Testen sollte das schon helfen.

Code: Alles auswählen

procedure TForm1.PaintToCanvas(ACanvas:TCanvas);
begin
  ACanvas.TextOut(5,5,'test');
end;
 
procedure TForm1.FormPaint(Sender: TObject);
begin
  PaintToCanvas(Self.Canvas);
end;

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: Druckersteuerzeichen in einem String

Beitrag von Heinrich Wolf »

Hi Günter,

Theo hat Dich ja schon richtig vorbereitet. Aber Form.Canvas und Printer.Canvas haben unterschiedliche DPI und unterschiedliche Hoehe und Breite. Du brauchst also unterschiedliche *.Canvas.Font.Size Ich hab das in meinem Kalenderprogramm http://www.Wolf-Fuerth.de/calprint.src.zip durchgezogen. Siehe http://www.Wolf-Fuerth.de/ -> Technik und Gratis Software -> Download Übersicht -> calprint.src.zip, calprint.zip, calprint-1-*.rpm.

Nützliche dabei sind:

Code: Alles auswählen

Form.Height
Form.Width
Screen.PixelsPerInch;
Printer.PageWidth;
Printer.PageHeight;
Printer.XDPI;
Printer.YDPI;
Gruß
Heiner

Antworten