![]() |
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:
|
Re: Drucken
Hallo Jürgen
Danke für deinen vorschlag. Ich programmiere zwar schon lange aber erst seit kurzem auch in Delphi, vielleicht fehlt mir deshalb das grundwissen für den druck. Nun das Programm das ich geschrieben habe ist eine Umfrage. Wenn der Benutzer die Fragen Beatwortet hat kommt er zu einer übersicht (formstatistik) und kann sich wenn er will diese Form ausdrucken (das formular wird zur laufzeit erstellt). Der Benutzer will nicht zuerst diese form skallieren und dann ausdrucken. Deshalb suche ich eine lösung die es erlaubt direkt zu drucken. Und da ich schon die ganze form gestalltet habe möchte ich nicht unbedingt alles nochmal gestallten damit der drucker weis wie ich es will. Und das ganze ist doch schon in dieser Form vorhanden, wird ja auch geduckt (einfach nicht alles... ). Es muss doch eine lösung geben die mir einfach diese gesammte form ausdruckt. Gruss Christophe |
Re: Drucken
Hast Du denn mal TExcellentPrinter angetestet, gibt es auch als TrialVersion ->
![]() Grüße Klaus |
Re: Drucken
Ich hab auch soetwas gemacht wie du das Formular ausgedruckt und dabei so gestreckt das es das A4 Format ausfüllt bei gleichbleibenden Seitenverhältnissen...
Musst aber warten bis ich daheim bin dann kann ich den Code posten... |
Re: Drucken
Zitat:
|
Re: Drucken
Ka. ich hab für das bischen Code selber ne halbe ewigkeit gebraucht aber Poster kan man damidt nicht drucken denk ich...
Ich weis auch garnicht ob das das ist was ihr sucht... Sorry wenn es das falsche ist...
Delphi-Quellcode:
begin
printer.Orientation:=poLandscape; //Querformat Form2.PrintScale:=poPrintToFit; //Form auf Querformat vergrößern (zoomen) if printersetupdialog1.Execute then begin Form2.print; //drucken end end |
Re: Drucken
Nun anscheinend gibt es in Delphi keine lösung um dieses Problem zu lösen ausser das ich das ganze nochmal schreiben muss. Schade bin so gut vorangekommen und nun verschlingt dieser druck meine ganze zeit.*grrr*
Gibt es eine möglichkeit das ganze in ein textfile zu schreiben damit ich das Textfile drucken kann? Und wenn ich schon dran bin .... Zitat:
ich versuche den lösungsansatz von jürgen mal. aber ob dies auch auf meherere seiten verteilt funktioniert bin ich gespannt. Auf jede fall danke ich allen die mir versucht haben zu helfen. Gruss christophe |
Re: Drucken
Hallo,
es gibt viel zu viele Gründe, warum das Drucken einer Form letztendlich unbefriedigend bleiben muss. Und trotzdem hat sich jemand die Mühe gemacht: ![]() Grüße vom marabu |
Re: Drucken
Zitat:
Grüße Klaus |
Re: Drucken
Hallo Klaus,
jetzt habe ich eine Weile grübeln müssen. Dann habe ich den ganzen thread gelesen und jetzt weiß ich auch was du meinst. Freundliche Grüße |
Re: Drucken
ja das hat man mir schon ein paar mal geschrieben. :-D aber wieso 199$ bezahlen? nur damit ich eine form drucken kann. Ich mache es mir einfach und verteile meine ausgabe auf verschieden forms. ohne 199$ zu bezahlen. und wenn ich mal zeit habe schreibe ich es selber. :coder: und selbstverstädlich poste ich es dann hier wenn ich es hinbekomme. bedarf besteht ja. bis dahin ....
|
Re: Drucken
![]() Aus dem Readme: Zitat:
Ist vielleicht einen Blick wert. und kostest nix. Grüße Klaus |
Re: Drucken
Hy ich verwände für diese Formularprints immer
![]() kostet zwar was, aber die welt ist es nicht und funktioniert prima. lg Bundy |
Re: Drucken
aloha Klaus
Des könnte was sein :dancer: DANKE!!! werde ich gleich heute abend austesten... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 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