![]() |
Drucken (ein leidiges Thema)
Moin Zusammen,
ich habe mal wieder ein Problem: Ich möchte in meiner Anwendung eine Art Rechnung Drucken. Sprich ich habe eine feste Vorlage mit Kopf, Tabellenüberschrift und Fußzeile. Diese möchte ich nun mit Text füllen (St, Artikel, Artikelnr, StPreis, Ges Preis). Ich habe zwar Rave aber da komme ich net mitweiter --> wie bekomme ich da meine Daten rein? Was benötige ich aus der Rave Kompo? Ich hoffe ihr könnt mir helfen! |
AW: Drucken (ein leidiges Thema)
Moin,
für den ersten Anfang schon mal mit einem der Tutorials herumgespielt? z.B. ![]() |
AW: Drucken (ein leidiges Thema)
Mhmm das geht net! Da bekomme ich nen fehler von wegen zugriffsverletzung! Kann ich dass net Manuell mit Printer machen? Und wenn wie?
|
AW: Drucken (ein leidiges Thema)
Hallo Minimax,
ich persönlich kann nur empfehlen ![]() Die Anbindung der Daten ist recht einfach. Du erzeugst eine ganz normale Datenanbindung (tTable, tQuery, tADODataset etc) und verknüpfst eine tfrxDataset-Komponente damit. Schon kannst Du die Daten in einem Report verwenden. Die Erzeugung mit Printer ist möglich, aber sehr aufwendig, wenn es einigermaßen flexibel und anwenderfreundlich sein soll. Gruß Guido R. |
AW: Drucken (ein leidiges Thema)
Manuell geht auch,
entweder direkt über die entsprechenden WinAPIs oder über TPrinter, welches ein Canvas besitzt, worauf man die aktuelle Seite draufmalen kann. |
AW: Drucken (ein leidiges Thema)
Für ganz einfache Sachen (Tabellen, ein Bild) kann man schon TPrinter verwenden. Für flexible Formulare wie Rechnungen etc. ist das wirklich ein Haufen Arbeit und ein ReportDesigner wirklich empfehlenswert.
Beim "manuellen" drucken muss man sich noch entscheiden, ob man die Koordinaten/Maße an den Drucker anpasst oder den Drucker an den Maßstab (letzeres mit SetMapMode, SetViewPort etc.) Ein kleines Beispiel für die erste Variante:
Delphi-Quellcode:
Selbst bei so einem einfachen Beispiel muss schon viel berechnet werden, damit das auf jedem Drucker gleich aussieht.
private
{ Private-Deklarationen Form1 } FxFactor, FyFactor : Double; [...] procedure TForm1.CalculateLoMetricFactor; var xDPI, yDPI : Integer; begin xDPI := GetDeviceCaps(Printer.Handle, LOGPIXELSX); yDPI := GetDeviceCaps(Printer.Handle, LOGPIXELSY); FxFactor := xDPI / 254; FyFactor := yDPI / 254; end; function TForm1.CalcX(XValue : Integer): Integer; begin Result := Round(XValue * FxFactor); end; function TForm1.CalcY(YValue : Integer): Integer; begin Result := Round(YValue * FyFactor); end; procedure TForm1.Button1Click(Sender: TObject); begin if PrintDialog1.Execute then begin CalculateLoMetricFactor; Printer.BeginDoc; with Printer.Canvas do begin // Maßangaben in 1/10 mm StretchDraw(Rect(CalcX(400),CalcY(100),CalcX(400+400),CalcY(100+400)), Image1.Picture.Graphic); Font.Size := 12; TextOut(CalcX(100), CalcY(100), '- Zeile 1'); TextOut(CalcX(100), CalcY(200), '- Zeile 2'); end; Printer.EndDoc; end; end; |
AW: Drucken (ein leidiges Thema)
Zitat:
![]() ![]() |
AW: Drucken (ein leidiges Thema)
Moin,
Danke für eure Antworten! Ich möchte eig nur keine DB verwenden! Gibt es da ne möglichkeit? |
AW: Drucken (ein leidiges Thema)
Notfalls kann man auch schnell ein TClientDataSet füllen und verwenden.
|
AW: Drucken (ein leidiges Thema)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:06 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