![]() |
Drucken
So, jetzt habe ich ein kleines Problem (Was sonst...):
Ich versuche eine Seite ausdem Drucker auszugeben. Das Problem dabei ist, dass nicht einfach ein Memo ausgedruckt werden soll, sondern auch noch andere Sachen. Es soll oben ein Header stehen (z.B. "Ausdruck aus meinem Programm" (zentriert)). Dann soll rechtsbündig ein Datum stehen und dann ein Trennstrich. Dann soll das eigentlich kommen. Titel + Dazugehöriger Text. Es würde mir schon reichen, wenn mir jemand sagt, wie man eine Canvasfläche druckt (die könnte ich dann beliebig bearbeiten)... Ich sag nur: HILFE, ich bin am verzweifeln Chris |
Der Drucker hat eine Eigenschaft printer.canvas
und dann musst du noch die Unit Printers einbinden!
Code:
printer.BeginDoc;
printer.canvas.textout(300,100,'Jan'); printer.EndDoc; |
Danke, aber noch eine Fragen:
Wie groß ist die Canvasfläche? Chris |
@Chakotay:
Da würde ein Blick in die Delphi-Hilfe helfen. Das Objekt TPrinter bringt die Eigenschaften "PageWidth" und "PageHeight" mit, die genau die von Dir gewünschten Informationen liefern. :mrgreen: Grüße, Daniel |
Hi!
So, jetzt läuft es mit dem drucken. Aber nur bei mir. Auf anderen Rechnern, da druckt er alles viel zu nah. Liegt das an der Auflösung? Hat jemand eine Ahnung, wie man das ändern kann? Chris |
So, folgendes Problem: Wenn ich auf meinem Rechner drucken will, dann klappt das auch alles Wunderbar. Wenn ich aber auf einem anderen Drucker/Rechner (gleiche Auflösung) drucken will, sind alle Texte zu nah aneinander bzw. die Rechtecke sind zu klein, dass der Text nicht mehr reinpasst (selbst wenn die Texte viel nah sind).
Ich habe mal was von QReport gehört, aber das ist ja eine ganz "normaler" Komponente, die sichtbar ist... Hat jemand eine Lösung? Chris |
Mir ist nicht so ganz klar wie das aussieht. Kannst du mal ein Screenshot machen? Und vielleicht mal eine Konsolenschriftart einstellen. Oder versteh ich das jetzt irgendwie falsch?
|
Liste der Anhänge anzeigen (Anzahl: 2)
Im Anhang findest du beide Ausdrucke. Ich glaube, du hast etwas falsch verstanden: beim Ausgedruckten ist was falsch.
Chris PS: Das mit der Farbe liegt am Druckertyp... |
Moin Chris,
da der Fehler ja offensichtlich im Zeilenvorschub begründet ist: Wie errechnest Du den Beginn der nächsten Zeile, bzw. des Rechtecks? Und wie sieht das ganze auf den Rechnern aus, wenn Du statt auf den Printer.Canvas auf ein Form.Canvas "druckst"? |
Hier mal der komplette Sourcecode...
@Christian: Sieht bei mir aus, wie gedruckt. Am besten, sagt ihr mir anhand des Sourcecodes, was falsch ist...
Code:
Chris
[b]procedure[/b] TForm1.drucken1Click(Sender: TObject);
[b]var[/b] i, j: integer; [b]begin[/b] [b]if[/b] PrintDialog1.Execute [b]then[/b] [b]begin[/b] Printer.Copies := PrintDialog1.Copies; Printer.BeginDoc; [b]with[/b] Printer [b]do[/b] [b]begin[/b] Canvas.Rectangle([color=#0055FF]100[/color], [color=#0055FF]100[/color], Printer.PageWidth - [color=#0055FF]100[/color], [color=#0055FF]300[/color]); Canvas.Font.Size := [color=#0055FF]14[/color]; Canvas.Font.Name := [color=#0055FF]'Courier New'[/color]; Canvas.Font.Style := [fsBold]; Canvas.Font.Color := clBlue; CenterText([color=#0055FF]'Ausdruck aus RememberIt!'[/color], [color=#0055FF]110[/color]); Canvas.Font.Size := [color=#0055FF]13[/color]; Canvas.Font.Style := [fsBold, fsItalic]; Canvas.Font.Color := clBlack; CenterText(DateTimeToStr(Now), [color=#0055FF]190[/color]); [i][color=#000080]{ end headerinformations }[/color][/i] Canvas.Font.Size := [color=#0055FF]9[/color]; Canvas.Font.Name := [color=#0055FF]'Courier New'[/color]; Canvas.Font.Style := [fsItalic]; Canvas.Font.Color := clBlack; CenterText([color=#0055FF]'Seite '[/color] + IntToStr(Printer.PageNumber), Printer.PageHeight - [color=#0055FF]50[/color]); Canvas.Font.Size := [color=#0055FF]12[/color]; Canvas.Font.Name := [color=#0055FF]'Arial'[/color]; Canvas.Font.Style := [fsBold]; Canvas.Font.Color := clBlack; Canvas.TextOut([color=#0055FF]100[/color], [color=#0055FF]350[/color], ListBox1.Items[ListBox1.ItemIndex]); Canvas.Font.Size := [color=#0055FF]10[/color]; Canvas.Font.Name := [color=#0055FF]'Arial'[/color]; Canvas.Font.Style := []; Canvas.Font.Color := clBlack; j := [color=#0055FF]420[/color]; [b]for[/b] i:=[color=#0055FF]0[/color] [b]to[/b] Memo1.Lines.Count -[color=#0055FF]1[/color] [b]do[/b] [b]begin[/b] [b]if[/b] i*(Canvas.TextHeight(Memo1.Lines[ i ])) = (PageHeight - [color=#0055FF]70[/color]) [b]then[/b] [b]begin[/b] [color=#000080][i]{ Hier gibt es noch ein Problem: Da macht er keine neue Seite...}[/i][/color] Printer.NewPage; j := [color=#0055FF]100[/color]; [b]end[/b]; Canvas.TextOut([color=#0055FF]200[/color], j + (i*[color=#0055FF]50[/color]), Memo1.Lines[ i ]); [b]end[/b]; [color=#000080][i]{ end rememberinformations }[/i][/color] [b]end[/b]; Printer.EndDoc; [b]end[/b]; [b]end[/b]; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 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