![]() |
Rechnungsseite drucken???
Ich möchte aus ner kleinen primitiven Datenbank von Fahrschülern ne Rechnung erstellen und drucken lassen, weis aber nicht so richtig, was ich dafür für ein Objekt nehmen soll. Kann man ein Panel so richtig als Druckseite einrichten oder ein ganzes Formular oder kann man ne Verknüpfung mit Word einrichten und die ganzen Daten irgendwie hineinbekommen? :roll:
|
Hallo,
und warum benutzt Du die Suche nicht? ![]() ![]() ![]() Und wenn Du nur das Formular Ducken willst, so wie es auf dem Bildschirm zu sehen ist, dann einfach Print; benutzen. Grüsse, Daniel :hi: |
gibt es eigentlich auch eine möglichkeit alles von dem formular zu drucken? also auch das was man nur sieht wenn man runter scrollen würde??
|
Hallo woOzy,
für den Druck von Rechnungen könntest du auch die QuickReport Komponenten oder in deinem Fall die Rave Komponenten nutzen. Beide benötigen nicht unbedingt Daten in Form von Datenbanksätzen, sondern arbeiten mit beliebigen Daten. Wäre das eine Alternative für dich? |
Hört sich gut an, und wie stell ich das am dümmsten an??
|
Hallo buyden,
welchen Reportgenerator willst du denn nutzen Rave oder Quickreport? Beide unterscheiden sich erheblich in ihrer Bedienung. |
Ich hab leider gar keine Ahnung, wie gesagt, mein Ziel ist eigentlich nur, das ich ne Rechnung mit den Daten aus 3 Arrays drucken kann, allerdings sind die nicht immer glech groß also sollte man nen sinnvollen Seitenumbruch machen können.
Das ist eben mein erster Versuch von ner primitiven Datenbank. |
OK buyden,
hab heute leider wenig Zeit. Morgen geht's los. Fangen wir mal mit Quickreport an... |
Hallo buyden,
damit der Abend nicht so langweilig wird, fangen wir doch schon mal an :mrgreen: Erstelle ein neues Formular. Wähle aus der Gruppe "QReport" das erste Element, den QuickRep, und ziehe es auf das neue Formular. Diese Komponente ist das Basiselement für Reporte und zeigt zur Designzeit das Seitenlayout. In der QuickRep-Eigenschaft Band im OI wählst du für HasTitle und HasDetail True. Daraufhin erscheinen 2 "Bänder" im Report. Wähle ein QRLabel (7. Element) und ziehe es in das Detail Band. Benenne dieses QRLabel "qrZeile". Melde dich, wenn du soweit bist. |
Leider habe ich keine Gruppe Qreport oder bin ich nur zu doof? :?
|
oben in der Komponentenleiste direkt zwischen "Datensteuerung" und "Dialog" (bei mir zumindest ist das "QReport")
|
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich hab keine QReports in meinen Kompos. Wie komm ich denn da sonst noch ran??
|
Hallo buyden,
um Rave zu fördern, hat Borland den Quickreport "versteckt". Um ihn sichtbar zu machen, muss das Paket dclqrt70.bpl, das in Verzeichnis .../Delphi7/bin/ steht, installiert werden. (Komponente installieren und die o.g. auswählen.) |
Da lassen sich doch aber nur .pas dateien installieren wenn ich über New Package gehe.
|
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo buyden,
du musst diese Borland Package Library als neues Package hinzufügen: Guckst du Bild und klickst du Hinzufügen :mrgreen: |
Got it!! :dancer2: Man muss nem Dummen eben auf die Sprünge helfen. :roll:
Ich hab jetzt nen QReport angelegt und das Label draufgezogen. Die Scrollbars hab ich auch. Bereit für den nächsten Schritt. |
Hallo buyden,
also weiter gehts: Jetzt, wo der erste Bericht schon fertig ist, passiert folgendes. Wenn der Bericht ausgeführt wird, teilt er dem Programm mit, dass er Datenbenötigt. Dazu löst er das Event NeedData aus. Du musst jetzt eine Methode für OnNeedData schreiben. Ich gehe zur Verallgemeinerung davon aus, dass das Array außerhalb von Form1 nicht sichtbar ist, weil es irgendwo lokal oder im privat Bereich deklariert worden sein kann. Deshalb stellt Form1 eine öffentliche Methode zur Verfügung, die Daten auf Anfrage zur Verfügung stellt.
Delphi-Quellcode:
GetNextLine liefert über den Parameter Zeile die nächste auszugebene Zeile aus und meldet als Ertgebnis zurück, ob noch Daten zur Verfügung stehen.
type
TForm1 = class(TForm) ... private { Private-Deklarationen } myArray : array [1..5] of String; public { Public-Deklarationen } AktZeile: Integer; function GetNextLine(var zeile: String): Boolean; end; So sieht die Funktion aus:
Delphi-Quellcode:
Auf Knopfdruck wird der Report ausgeführt:
function TForm1.GetNextLine(var zeile: String): Boolean;
begin Result := (AktZeile <= 5); if Aktzeile <= 5 then begin zeile := myArray[AktZeile]; Inc(AktZeile) end; end;
Delphi-Quellcode:
In Form2 nimmst du Form1 in der implementation uses Anweisung auf (und umgekehrt Form2 in Form1)
procedure TForm1.BitBtn1Click(Sender: TObject);
var i : Integer; begin { Testeinträge erzeugen } for i := 1 to 5 do myArray[i] := 'Das ist der '+IntToStr(i) +'-te Testeintrag für den Quickreport Test.'; AktZeile := 1; Form2.Quickrep1.Preview; end; Jetzt noch die OnNeddData Methode in Form2:
Delphi-Quellcode:
Und feddich :mrgreen:
procedure TForm2.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
var zeile : String; begin MoreData := Form1.GetNextLine(zeile); if MoreData then qrZeile.Caption := zeile; end; |
Hallo buyden,
wenn dir diese Lösung nicht gefällt, oder dich einfach mal der Einsatz des Rave Reoprts interessiert, könnte ich dir auch das mal zeigen. Interesse? [ ] Ja sicher [ ] Nerv mich nicht [ ] Ey man, es ist Ostern, raffst du das nicht [ ] Rave, watt is dat denn [ ] all of the above [ ] mir doch egal |
Bin zwar nicht buyden.... aber
[x] Rave, watt is dat denn |
Hallo Sharky, der Osterhai,
Rave Report ist ein Report Builder, ähnlich wie Quickreport. Mit Delphi 7 Professional (und darüber) liefert Borland zusätzlich zum Quickreport diesen neuen Reportgenerator aus. Die alten Quickreports können nicht automatisch übernommen werden, obwohl es bald so etwas wie eine automatische Konvertierung geben soll. Ich hab bisher nur einen einzigen Report mit Rave erstellt, macht aber (nach download des ersten Updates) einen ganz guten Eindruck. |
Hai Sharky,
Zitat:
Grüsse, Daniel :hi: |
Zitat:
danke für die Information. Ich habe mir eben einmal das Demo angesehen. Sieht ganz nett aus. Was mich nur stört ist die Tatsache das der PrintDialog in Englisch ist bzw. das es nicht der Standard-Dialoag von Windows ist. Kann man das irgendwo einstellen. Ach ja, wo gibt es denn die Updates? |
Hallo Sharky,
![]() Das mit dem Dialog muss ich mir noch einmal anschauen. Ich meine, dass man mit dem RvSystem Objekt eine Menge Einstellungen auswählen kann. |
Man spricht deutsch...
|
hallo,
die borland-update's von rave (kostenfrei): ![]() :-) thomas |
Da bin ich wieder, sorry, dass ich nix von mir hören lassen hab, :oops: ich bin leider auch noch nicht dazu gekommen, das mit dem QReport weiterzuführen. Sieht zur Zeit ein bisschen knapp aus mit meiner Zeit :shock: ich bleib aber dran
MFG BUYDEN |
Hallo MrSpock,
ich bin gerade dabei mit QuickReport ein Protokoll auszudrucken. Aber jetzt habe ich folgendes Problem: auf der Form habe ich mein Layout für die erste Seite gemacht, also ein Deckblatt mit Kopf- und Fußzeile und Detail. Im Detail steht nur z.B. Protokoll von XY... Auf der zweiten Seite soll dann Kopf- und Fußzeile gleichbleiben und in Detail soll jetzt alles Protokolliert werden, d.h. alles was in einer Stringliste steht reinschreiben. Nur bekomme ich keine zweite Seite hin. Kannst du mir da vielleicht ein Tip geben wie das funktioniert? Im vorraus schon mal DANKE. :roll: Gruß eassy |
Hallo eassy,
herzlich willkommen im Delphi-PRAXIS Forum. Du kannst einfach einen Pageheader einfügen. Dort setzt du hasChild auf True. Bei dem dann erzeugten Band kannst du wieder hasChild auf True setzen. So hast du im Prinzip 3 Kopfzeilen. In der BeforePrint des jeweiligen Bandes legst du fest, welches gedruckt werden soll. Z.B:
Delphi-Quellcode:
...
procedure TForm2.PageHeaderBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin PrintBand := QuickRep1.PageNumber = 1; end; procedure TForm2.ChildBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin PrintBand := QuickRep1.PageNumber = 2; end; procedure TForm2.ChildBand2BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin PrintBand := QuickRep1.PageNumber > 2; end; |
Hallo MrSpock,
danke, das werde ich mal ausprobieren. gruß eassy |
Re: Rechnungsseite drucken???
Hallo MrSpock,
vielen Dank für die Hilfe. Ich suche schon über ein halbes Jahr nach einer Lösung. Wir sind von Delphi3 auf 7 umgestiegen. Habe dann QReport für alte Programme gesucht. Delphi wollte uns nur gegen Bezahlung helfen. Finde ich eigentlich unverschämt, war die ganze Zeit mit dem Service sehr zufrieden. Also nochmals Danke. |
Re: Rechnungsseite drucken???
Hallo Thomas,
zunächst einmal herzlich willkommen im Delphi-PRAXIS Forum. Es freut mich, wenn ich helfen konnte. Du hast vielleich schon oder wirst in der Zukunft feststellen, dass es hier so einige wirklich gute Tips gibt. Ich wünsche dir weiter viel Spaß und Erfolg in unserem Forum. |
Re: Rechnungsseite drucken???
Hallo MrsSpock,
hätte dringende Frage zu Deinem hervorragenden Artikel. Bist Du noch ansprechbar? Grüsse, Erik Morando |
Re: Rechnungsseite drucken???
Hallo erikmorando,
herzlich willkommen im Delphi-PRAXIS Forum. Wenn ich nicht gerade schlafe, bin ich fast immer ansprechbar :mrgreen: . Poste doch einfach mal deine Frage. Öffne dazu aber bitte einen neuen Thread. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 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