Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Rechnungsseite drucken??? (https://www.delphipraxis.net/4054-rechnungsseite-drucken.html)

buyden 13. Apr 2003 10:28


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:

Daniel B 13. Apr 2003 10:37

Hallo,

und warum benutzt Du die Suche nicht?
http://www.delphipraxis.net/internal...hlight=drucken
http://www.delphipraxis.net/internal...hlight=drucken
http://www.delphipraxis.net/internal...hlight=drucken
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:

wo0zy 14. Apr 2003 11:39

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??

MrSpock 14. Apr 2003 11:42

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?

buyden 14. Apr 2003 14:06

Hört sich gut an, und wie stell ich das am dümmsten an??

MrSpock 15. Apr 2003 10:07

Hallo buyden,

welchen Reportgenerator willst du denn nutzen Rave oder Quickreport?

Beide unterscheiden sich erheblich in ihrer Bedienung.

buyden 15. Apr 2003 15:51

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.

MrSpock 15. Apr 2003 18:55

OK buyden,

hab heute leider wenig Zeit. Morgen geht's los.

Fangen wir mal mit Quickreport an...

MrSpock 15. Apr 2003 20:17

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.

buyden 16. Apr 2003 08:30

Leider habe ich keine Gruppe Qreport oder bin ich nur zu doof? :?

mirage228 16. Apr 2003 09:16

oben in der Komponentenleiste direkt zwischen "Datensteuerung" und "Dialog" (bei mir zumindest ist das "QReport")

buyden 16. Apr 2003 09:33

Liste der Anhänge anzeigen (Anzahl: 1)
Also ich hab keine QReports in meinen Kompos. Wie komm ich denn da sonst noch ran??

MrSpock 16. Apr 2003 09:35

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.)

buyden 16. Apr 2003 09:59

Da lassen sich doch aber nur .pas dateien installieren wenn ich über New Package gehe.

MrSpock 17. Apr 2003 07:10

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:

buyden 17. Apr 2003 12:48

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.

MrSpock 17. Apr 2003 17:40

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:
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;
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.

So sieht die Funktion aus:
Delphi-Quellcode:
function TForm1.GetNextLine(var zeile: String): Boolean;
begin
   Result := (AktZeile <= 5);
   if Aktzeile <= 5 then
  begin
      zeile := myArray[AktZeile];
    Inc(AktZeile)
  end;
end;
Auf Knopfdruck wird der Report ausgeführt:
Delphi-Quellcode:
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;
In Form2 nimmst du Form1 in der implementation uses Anweisung auf (und umgekehrt Form2 in Form1)

Jetzt noch die OnNeddData Methode in Form2:
Delphi-Quellcode:
procedure TForm2.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
var
   zeile   : String;
begin
   MoreData := Form1.GetNextLine(zeile);
  if MoreData then
     qrZeile.Caption := zeile;
end;
Und feddich :mrgreen:

MrSpock 20. Apr 2003 16:29

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

Sharky 20. Apr 2003 17:44

Bin zwar nicht buyden.... aber

[x] Rave, watt is dat denn

MrSpock 20. Apr 2003 17:53

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.

Daniel B 20. Apr 2003 17:53

Hai Sharky,
Zitat:

Zitat von Sharky
Bin zwar nicht buyden.... aber
[x] Rave, watt is dat denn

Rave Reports.

Grüsse, Daniel :hi:

Sharky 21. Apr 2003 06:08

Zitat:

Zitat von MrSpock
...Ich hab bisher nur einen einzigen Report mit Rave erstellt, macht aber (nach download des ersten Updates) einen ganz guten Eindruck.

Hai MrSpock,

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?

MrSpock 21. Apr 2003 14:55

Hallo Sharky,

guckst du hier.

Das mit dem Dialog muss ich mir noch einmal anschauen. Ich meine, dass man mit dem RvSystem Objekt eine Menge Einstellungen auswählen kann.

MrSpock 21. Apr 2003 15:19

Man spricht deutsch...
 
Hallo Sharky,

Rave in deutsch. Das sollte dir helfen. :mrgreen:

merlin17 21. Apr 2003 21:55

hallo,

die borland-update's von rave (kostenfrei):
http://bdn.borland.com/article/0,1410,29792,00.html

:-) thomas

buyden 22. Apr 2003 14:20

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

eassy 9. Mai 2003 12:10

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

MrSpock 9. Mai 2003 22:17

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;

eassy 16. Mai 2003 07:27

Hallo MrSpock,

danke, das werde ich mal ausprobieren.

gruß
eassy

Thomas Jauch 7. Sep 2004 12:01

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.

MrSpock 7. Sep 2004 12:34

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.

erikmorando 27. Okt 2004 13:19

Re: Rechnungsseite drucken???
 
Hallo MrsSpock,

hätte dringende Frage zu Deinem hervorragenden Artikel.
Bist Du noch ansprechbar?

Grüsse,
Erik Morando

MrSpock 27. Okt 2004 15:43

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