AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Drucken

Ein Thema von Christophe · begonnen am 14. Okt 2006 · letzter Beitrag vom 17. Okt 2006
Antwort Antwort
Seite 1 von 3  1 23      
Christophe

Registriert seit: 5. Okt 2006
38 Beiträge
 
#1

Drucken

  Alt 14. Okt 2006, 18:44
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
Form1.print; versucht was aber nicht zum gewünschten Resultat führte.... dan habe ich mit TPrinter rumgespielt dort muss aber alles auf das Canvas gezogen werden.
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
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Drucken

  Alt 14. Okt 2006, 18:51
Hast Du es damit schonmal versucht?

Form1.PaintTo(Printer.Canvas.Handle, 0, 0); Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Christophe

Registriert seit: 5. Okt 2006
38 Beiträge
 
#3

Re: Drucken

  Alt 14. Okt 2006, 22:38
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.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Drucken

  Alt 14. Okt 2006, 22:59
Wenn die Lösung auch etwas kosten darf: -> http://www.code4sale.com/joehecht/prndib.htm

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: Drucken

  Alt 14. Okt 2006, 23:03
Zitat von Christophe:
dan habe ich mit TPrinter rumgespielt dort muss aber alles auf das Canvas gezogen werden.
Nun meine Frage. Ist es möglich ohne grosses drum rum dieses formular auszudrucken (langes Formular).
Hi,
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
  Mit Zitat antworten Zitat
Christophe

Registriert seit: 5. Okt 2006
38 Beiträge
 
#6

Re: Drucken

  Alt 15. Okt 2006, 01:39
ich denke ich habe einen teil verstanden. der code sieht nun so aus:

Delphi-Quellcode:
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;
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.
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#7

Re: Drucken

  Alt 15. Okt 2006, 09:42
Hallo Christophe,

wenn Dir Form1.Print nicht genügt (mir fehlten z.B. Menüs und manche Feldinhalte bei ComboBoxen u.ä.), dann nutze doch Delphi-Referenz durchsuchenTCustomForm.GetFormImage, speichere dieses Bitmap in einer Datei und bearbeite sie mit einem Bild-Editor, in dem Du skalieren und Ausschnitte drucken kannst.

Gruß Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Christophe

Registriert seit: 5. Okt 2006
38 Beiträge
 
#8

Re: Drucken

  Alt 15. Okt 2006, 10:34
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!!
  Mit Zitat antworten Zitat
Christophe

Registriert seit: 5. Okt 2006
38 Beiträge
 
#9

Re: Drucken

  Alt 16. Okt 2006, 12:25
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
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#10

Re: Drucken

  Alt 16. Okt 2006, 12:49
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 von Jürgen Thomas:
wenn Dir Form1.Print nicht genügt (mir fehlten z.B. Menüs und manche Feldinhalte bei ComboBoxen u.ä.), dann nutze doch Delphi-Referenz durchsuchenTCustomForm.GetFormImage, speichere dieses Bitmap in einer Datei und bearbeite sie mit einem Bild-Editor, in dem Du skalieren und Ausschnitte drucken kannst.
Es ist mir noch nicht einmal klar, ob Du das Formular zur Laufzeit oder im Entwurf ausdrucken willst. Delphi bietet in der IDE auch den Menü-Punkt Datei|Drucken und stellt Dir dort Möglichkeiten zur Skalierung zur Verfügung. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz