![]() |
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:
|
AW: Drucken (ein leidiges Thema)
Also ich habe mal mit Rave versucht zu spielen:
Delphi-Quellcode:
So wenn ich nun auf den Button klicke kommt folgende meldung:
procedure TForm4.RvSystem1Print(Sender: TObject);
begin with Sender as TBaseReport do begin SetFont('Arial', 15); GotoXY(1,1); Print('Welcome to Code Based Reporting in Rave'); end; end; procedure TForm4.sButton1Click(Sender: TObject); begin RvSystem1.execute; end;
Code:
Wenn ich dann ok klicke, kommt der Output Options Dialog der aber leer ist. Bei ok kommt folgendes:
Erste Gelegenheit für Exception bei $769DFBAE. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 0040D05C in Modul 'Auftragsverwaltung.exe'. Lesen von Adresse 00000042'. Prozess Auftragsverwaltung.exe (5344)
Code:
Dann direkt danach:
Erste Gelegenheit für Exception bei $769DFBAE. Exception-Klasse EStringListError mit Meldung 'Listenindex überschreitet das Maximum (-1)'. Prozess Auftragsverwaltung.exe (5344)
Code:
Das ganze zeigt er mir immer bei dem end; des onclick events an!
Erste Gelegenheit für Exception bei $769DFBAE. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 0040D05C in Modul 'Auftragsverwaltung.exe'. Lesen von Adresse 00000042'. Prozess Auftragsverwaltung.exe (5344)
Dann bei Ok ist alles wieder normal und es tut sich nix!! Weiß jemand woran das liegt? |
AW: Drucken (ein leidiges Thema)
Zitat:
![]() In meinem Datenmodul liegen neben den benötigten Datasets und Datasources für jeden benötigten Report ein TRvProject und für jede daran beteiligte Tabelle eine TRvDataSetConnection. Letztere sind mit den entsprechenden Datasets verbunden (Property Dataset). Ein Doppelklick auf die jeweilige Projektkomponente öffnet den Rave-Designer, wo du dein Report-Formular gestaltest. Ausführliche Hinweise findest du in den Tutorials, auf die ich bereits hingewiesen habe (ich schreib jetzt hier garantiert kein Rave-Tutorial). Der Einstieg in RaveReport ist nicht leicht, man muß sich die Funktionalität erarbeiten. Gilt aber für die meisten anderen komplexeren Komponenten ebenso. |
AW: Drucken (ein leidiges Thema)
Mhmm ok -- Danke! Wenn ich aber auf Rave Project doppelklicke kommt der Splashscreen von Rave und hängt sich nach ner zeit auf! Weiß einer Warum?
|
AW: Drucken (ein leidiges Thema)
Zitat:
|
AW: Drucken (ein leidiges Thema)
Die die bei der RAD Studio 2009 Architekt bei war! Kann man die Kompo eventuell neu installieren?
|
AW: Drucken (ein leidiges Thema)
Hi,
hast du Delphi als Admin gestartet? Ich weiß noch, dass ich das bei meiner 2007er tun musste, damit ich danach den Rave-Designer starten musste, weil der wohl beim Starten was in eine INI schreibt, die im Programmverzeichnis liegt (wenn man denn den "Fehler" gemacht hat, Delphi+Rave dahin zu installieren). LG, Frederic |
AW: Drucken (ein leidiges Thema)
Werde ich sofort mal ausprobieren! Es liegt nämlich im Programmverzeichnis!
|
AW: Drucken (ein leidiges Thema)
War zwar nen guter Tipp, bringt es aber net! Unter Win7 kommt direkt nach dem Start die Meldung Programm funktioniert nicht mehr -- Beenden!
|
AW: Drucken (ein leidiges Thema)
Zitat:
|
AW: Drucken (ein leidiges Thema)
naja unter Win Vista is es das selbe!
|
AW: Drucken (ein leidiges Thema)
Zitat:
|
AW: Drucken (ein leidiges Thema)
[OT]
Zitat:
[/OT] |
AW: Drucken (ein leidiges Thema)
Hi,
ich habe unter W7 mit D2007 und Rave 7 keine Problem. LG, Frederic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 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