canvas.textout

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

canvas.textout

Beitrag von malabarista »

Ich möchte beim Drucken einen linken Rand von 20mm lassen. Bei jedem Drucker.

Ich habe es ausprobiert mit
Canvas.Textout(200, y,z);

Damit funktioniert es bei meinem Drucker.

Aber ich habe nirgends gefunden, ob dies immer die Angabe in zehntel-mm ist. Oder hängt dies eventuell auch noch von der Druckerauflösung ab ?

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: canvas.textout

Beitrag von pluto »

Aber ich habe nirgends gefunden, ob dies immer die Angabe in zehntel-mm ist. Oder hängt dies eventuell auch noch von der Druckerauflösung ab ?

Die angaben sind Pixel werte.
MFG
Michael Springwald

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: canvas.textout

Beitrag von Mathias »

Ich weis nicht, ob es eine Funktion für Seitenränder gibt.
Aber du kannst ermitteln, wie viele Pixel dein Ausdruck hat. Da man die Grösse eines A4 kennt, sind deine 2cm mit eine Dreisatz berechenbar.

Das sieht dann in etwa so aus:

Code: Alles auswählen

  with Printer do begin
    Title := 'Messwert ' + DateiKopf.AuftragsNr + '-' + DateiKopf.LaufNr;
    Orientation := poLandscape;
    maxX := PageWidth;
    maxY := PageHeight;
    BeginDoc;
    Kurfe(Canvas, True);
    EndDoc;
  end


Wen man die Printer.pas anguckt sieht man, was für Funktionen man zur Verfügung hat.
XDPI und YDPI könnte man vielleicht auch für die Seitenrand-Berechnung brauchen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten