Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Canvas Zentriert ausdrucken (https://www.delphipraxis.net/180958-canvas-zentriert-ausdrucken.html)

Natcree 3. Jul 2014 11:36


Canvas Zentriert ausdrucken
 
Hallo ich will mit folgendem Code ein String ausdrucken

Delphi-Quellcode:
Printer.BeginDoc;
SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC);
printer.Canvas.Font.Size:=20;
caption:='Hallo';
Printer.canvas.TextOut((printer.PageWidth-canvas.TextWidth(caption))div 2, 0, Caption);
Printer.endDoc;
Jedoch kommt es nicht zentriert raus was kann ich da noch machen?

Blup 3. Jul 2014 12:01

AW: Canvas Zentiert ausdrucken
 
Code:
x := (xPosRechterRand + xPosLinkerRand - TextBreite) div 2;
Printer.canvas.TextOut(x, 0, Caption);

Natcree 3. Jul 2014 12:58

AW: Canvas Zentiert ausdrucken
 
wie bekomme ich po linker und rechter Rand ?

Blup 3. Jul 2014 13:36

AW: Canvas Zentiert ausdrucken
 
Wenn du selbst ohne eigenen Rand druckst und den gesamten druckbaren Bereich nutzen willst:
Delphi-Quellcode:
xPosLinkerRand := 0;
xPosRechterRand := Printer.PageWidth;

baumina 3. Jul 2014 13:42

AW: Canvas Zentiert ausdrucken
 
Dann kommt wieder das gleiche raus, was der TE oben stehen hat :thumb:

baumina 3. Jul 2014 13:50

AW: Canvas Zentiert ausdrucken
 
Ah ich hab den kleinen Fehlerteufel entdeckt:

Printer.canvas.TextOut((printer.PageWidth-printer.canvas.TextWidth(caption))div 2, 0, Caption);

Natcree 3. Jul 2014 13:52

AW: Canvas Zentiert ausdrucken
 
Klappt nicht ist ein bondrucker mit 8 inch papier. Wie kann ich die Pagewidth oder das papierformat ändern?

druckauflösung ist 202x204 pro inch

baumina 3. Jul 2014 13:56

AW: Canvas Zentiert ausdrucken
 
Im Printersetup.

Blup 3. Jul 2014 14:04

AW: Canvas Zentiert ausdrucken
 
Normalerweise zentriert man auch über dem Dokumenteninhalt.
Wenn es denn unbedingt über die ganze Papierbreite sein soll, vieleicht so:
Delphi-Quellcode:
  xPosLinkerRand := 0 - GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
  xPosRechterRand := xPosLinkerRand + GetDeviceCaps(Printer.Handle, PHYSICALWIDTH);
Allerdings muss dafür im Druckertreiber auch die richtige Papierbreite eingestellt sein.

Klappt nicht ersetzt übriegens keine Fehlerbeschreibung.

Natcree 3. Jul 2014 14:23

AW: Canvas Zentiert ausdrucken
 
Der 8 in. ist ein gestellt die breite des Bon hat 8 cm vielleicht liegt es daran wie kann ich es ändern? er zeigt mir nur größere inch werte bei den druckereinstellungen an

baumina 3. Jul 2014 15:00

AW: Canvas Zentiert ausdrucken
 
Zitat:

Zitat von Natcree (Beitrag 1264274)
Klappt nicht ist ein bondrucker mit 8 inch papier.

Zitat:

Zitat von Natcree (Beitrag 1264280)
die breite des Bon hat 8 cm

8 inch sind 20.32 cm

Natcree 3. Jul 2014 17:06

AW: Canvas Zentiert ausdrucken
 
Und nun ne andere papiersorte kann ich nicht einstellen

Natcree 6. Jul 2014 02:46

AW: Canvas Zentiert ausdrucken
 
Was kann ich denn machen. gibt es ne möglichkeit oder nen Codesnipsel mit dem ich die Pagewidth auf 8cm stellen kann?

p80286 6. Jul 2014 10:32

AW: Canvas Zentiert ausdrucken
 
Zitat:

Zitat von Natcree (Beitrag 1264579)
Was kann ich denn machen. gibt es ne möglichkeit oder nen Codesnipsel mit dem ich die Pagewidth auf 8cm stellen kann?

Zitat:

Zitat von baumina (Beitrag 1264276)
Im Printersetup.

Zitat:

Zitat von Natcree (Beitrag 1264315)
Und nun ne andere papiersorte kann ich nicht einstellen

Könnte es sein, daß Du den Drucker außerhalb seiner Spezifikation betreibst?
U.U. wäre es sinnvoll uns mitzuteilen um welchen Drucker es sich handelt, und was für ein "Papier" Du bedrucken möchtest (Etiketten? Endlos?)

Gruß
K-H

P.S.
Könnte es sein, daß hier Pixel und Millimeter und ... durcheinander geworfen werden?
Delphi-Quellcode:
printer.PageWidth-canvas.TextWidth(caption))div 2, 0, Caption);

Natcree 6. Jul 2014 11:06

AW: Canvas Zentiert ausdrucken
 
also der drucker ist ein Thermodrucker TPG Color pos A795. hat 8cm breite bonrollen eingestellt ist der drucker papiergröße 8in. . Es gibt dort nur noch größere in. Werte.

Sir Rufo 6. Jul 2014 13:19

AW: Canvas Zentiert ausdrucken
 
Zitat:

Zitat von Natcree (Beitrag 1264585)
also der drucker ist ein Thermodrucker TPG Color pos A795. hat 8cm breite bonrollen eingestellt ist der drucker papiergröße 8in. . Es gibt dort nur noch größere in. Werte.

Ist das der Drucker hier:
http://www.racoindustries.com/axa795.htm

Wenn du die echte Breite nicht einstellen kannst, dann wird das so wohl nichts.

Wenn man nur ausrechnen könnte, wie breit 8cm in Pixeln auf dem Drucker ist, das wäre ja was, aber das muss bestimmt noch erfunden werden (kann auch sein, dass das Lehrstoff aus der Grundschule ist "Dreisatz").

Natcree 6. Jul 2014 14:17

AW: Canvas Zentiert ausdrucken
 
ja das ist der drucker. das mit dem ausrechnen währe kein problem. :-p wie kann ich ihm die werte setzen?

Sir Rufo 6. Jul 2014 15:13

AW: Canvas Zentiert ausdrucken
 
Was willst du wem da setzen?

Zeichne doch einfach nur in dem Bereich

p80286 6. Jul 2014 18:32

AW: Canvas Zentiert ausdrucken
 
Unter Umständen fehlt Dir http://www.cognitive.com/assets/down...9-9200302E.pdf dort solltest Du Dir mal "Print Zones for 80 mm Paper" anschauen.
Überhaupt ist das Manual recht interessant. Ggf. solltest Du überlegen den Drucker direkt mit den notwendigen Kommandos zu füttern.

Gruß
K-H

Natcree 6. Jul 2014 19:51

AW: Canvas Zentiert ausdrucken
 
danke das wars auf die idee wäre ich nicht gekommen. habe jetzt dem drucker 80 mm eingestellt und jetzt funtz es. Auf die einfachsten sachen kommt mann nicht gibt es ne möglichkeit den drucker per befehl auf ne ander papiergröße umzustellen. laut programming guide muss wieder ein string an den drucker geschickt werden. mit dem kassenladen öffnen hat es ja nun geklappt. bekommt man das ohn viel codebastelei hin?

p80286 7. Jul 2014 11:08

AW: Canvas Zentriert ausdrucken
 
Zitat:

Zitat von Natcree (Beitrag 1263581)
blup danke das war es jetzt klappt es

"Jungs" ihr seit einfach spitze ich danke euch

Wenn "es" klappt, was spricht dagegen die entsprechende Steuersequenz auf die gleiche Art an den Drucker zu senden?


Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 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 by Thomas Breitkreuz