![]() |
Drucken
Hallo zusammen,
Ich habe ein Formular erstellt und würde dieses nun gerne ausdrucken. Habe auch schon einiges gelesen aber nichts das ohne grossen aufwand geht. Ich habe es mit
Delphi-Quellcode:
versucht was aber nicht zum gewünschten Resultat führte.... :wall: dan habe ich mit TPrinter rumgespielt dort muss aber alles auf das Canvas gezogen werden. :gruebel:
Form1.print;
Nun meine Frage. Ist es möglich ohne grosses drum rum dieses formular auszudrucken (langes Formular). Will ja nicht nochmal alles von vorne machen nur weil ich nicht die ganze Form drucken kann. Danke schon mal im voraus grüsse Christophe |
Re: Drucken
Hast Du es damit schonmal versucht?
Delphi-Quellcode:
Grüße
Form1.PaintTo(Printer.Canvas.Handle, 0, 0);
Klaus |
Re: Drucken
hmmm das macht ja das gleiche wie form1.print.... ausser das ich die grösse skalieren kann. Aber wie gesagt meine form ist grösser d.h. ein teil der Formulars sieht man nicht. Und um diesen bereich geht es. Das Formular ist schon so gestalltet wie ich den ausdruck haben will. Muss nur noch die ganze form drucken können auch den Bereich den man nicht sieht.
|
Re: Drucken
|
Re: Drucken
Zitat:
da ist wieder mal die Definition von großem Drumrum die große Frage. An sich ist dein Formular nicht mehr als ein Canvas, auf den gezeichnet wird. Dein Drucker wird unter Windows auch als GDI (Graphic Device Interface) behandelt, der Canvas von TPrinter ist halt ein GDI-Device, auf dass du zeichnen kannst. An sich hast du damit schon eine gewisse Einfachheit, da du einfach Dinge wie StretchBlt oder BitBlt mit diesem Canvas verwenden kannst. Wie Klaus dir auch schon zeigte, kannst du so also auch dein Formular kopieren. Was die Größe angeht, so kannst du mittels StretchBlt oder StretchDraw auch einfach dein Formular auf eine bestimmte Größe stauchen. An sich solltest du es dir beim Drucken aber nicht so einfach machen. Es ist ein bekanntes Problem (vieler Programmiersprachen), dass Drucken nicht trivial ist. Was du beachten musst ist, dass du je nach Drucker unterschiedliche Ergebnisse bekommen würdest (mit dem hier gezeigten Weg). Das liegt dann an der eingestellten Auflösung. Du gibst die Größe deiner Seite letztlich in Pixel an, je nach DPI Wert des Druckers hast du also auf einen Inch unterschiedlich viele Pixel, bei hoher Auflösung würde also nur noch ein Teil der Seite bedruckt... Deswegen solltest du die Einheit des Druckers erst auf etwas Einheitliches (z.B. millimeter oder zehntel- millimeter) umstellen. Wie man druckt und was man beachten muss verrät dir die DP-Suche Gruß Der Unwissende |
Re: Drucken
ich denke ich habe einen teil verstanden. :gruebel: der code sieht nun so aus:
Delphi-Quellcode:
Das sieht nicht schlecht aus aber ich bekomme nur den letzten teil des formulars gedruckt. Aber ich denke es sollte etwa 3 seiten zum drucken geben bis der ganze inhalt drauf ist. Wie komme ich nun auf die Restlichen druckinfos? ich sollte doch irgendwo angeben können wie gross das canvas und wieviele seiten es sein sollen die geduckt werden sollen.
Printer.BeginDoc;
SetMapMode(Printer.Canvas.Handle, MM_ANISOTROPIC); SetWindowExtEx(Printer.Canvas.Handle, GetDeviceCaps(Canvas.Handle, LOGPIXELSX), GetDeviceCaps(Canvas.Handle, LOGPIXELSY), Nil); SetViewportExtEx(Printer.Canvas.Handle, GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX), GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY), Nil); Form1.PaintTo(Printer.Canvas.Handle, 0, 0); Printer.EndDoc; |
Re: Drucken
Hallo Christophe,
wenn Dir Form1.Print nicht genügt (mir fehlten z.B. Menüs und manche Feldinhalte bei ComboBoxen u.ä.), dann nutze doch ![]() Gruß Jürgen |
Re: Drucken
Alles was auf meinem Formular liegt sind labels. Ob mir tform genügt weis ich nicht da ich nicht weis ob das ganze formular ausgedruckt werden kann. Ansich würde mir die TForm schon reichen. weis einfach nicht wie ich das ganze Formular ausdrucken kann.
Brauche dringend eine lösung am liebsten die wie oben schon beschrieben. Und das muss gehen da ich schon einen ausdruck vom oberen und vom unteren teil drucken konnte nur nicht alles miteinander. danke!! |
Re: Drucken
Habe leider keine Antwort erhalten. Aus den Antworten entnehmen ich das eine Form auch ein Canvas ist. Dan sollte es doch möglich sein diese ganze Form auszudrucken. Oder gibt es eine möglichkeit alle labels mit deren eigenschaften pos, grösse usw. in das Printer.canvas reinzuziehen?
Komme wirklich nicht mehr weiter und brauche diesen ausdruck.....HILFE |
Re: Drucken
Hallo Christophe,
aus Deinen beiden letzten Beiträgen kann ich nicht ersehen, dass bzw. warum Du mit den anderen Vorschlägen und meinen Gedanken nicht weiterkommst: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:03 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