AGB  ·  Datenschutz  ·  Impressum  







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

Neue Seite im Rave-Report

Ein Thema von Mikko · begonnen am 17. Aug 2003 · letzter Beitrag vom 19. Aug 2003
Antwort Antwort
Mikko

Registriert seit: 23. Jan 2003
Ort: Baden
65 Beiträge
 
#1

Neue Seite im Rave-Report

  Alt 17. Aug 2003, 14:52
Ich möchte eine neue Seite im Rave-Report erstellen, kriege es aber nicht hin. Der Report ist kein vorgefertigter im Designer sondern ein im Quelltext zur Laufzeit generierter.
Die Ausgabe im Report sind keine Datensätze irgendwelcher Tabellen sondern einfach nur Daten aus zwei verschiedenen Listviews. Diese Daten gebe ich auf einem Band im Report aus, was auch soweit funktioniert. Aber wenn die Anzahl der Daten zu groß wird, wird keine zweite Seite automatisch generiert. Die Eigenschaften

MyBand.AllowSplit:=True;

vom Band ist gesetzt.
Normalerweise würde es mir auch reichen, wenn ich von Hand eine neue Seite hinzufügen könnte (wenn man am Ende der Seite angekommen ist). Aber selbst das kriege ich nicht hin.
  Mit Zitat antworten Zitat
merlin17

Registriert seit: 15. Dez 2002
Ort: Mittelfranken
980 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: Neue Seite im Rave-Report

  Alt 18. Aug 2003, 11:58
Mikko,

du hast einen rave report komplett zur runtime erstellt, oder?
und nun willst du auf mehreren seiten ausdrucken. so aus der ferne: probiere einmal die memo-komponente aus.
aber wie gesagt, ich bräuchte mehr info's wie der report aussieht und was du genau erreichen willst.


8) thomas
- TeamNevrona cannot respond to questions received via email -
http://rave-notes.blogspot.com
  Mit Zitat antworten Zitat
Mikko

Registriert seit: 23. Jan 2003
Ort: Baden
65 Beiträge
 
#3

Re: Neue Seite im Rave-Report

  Alt 18. Aug 2003, 19:15
Genau, der Report wird zur Runttime erstellt. Ich will nun, daß meine Daten, wenn die erste Seite voll ist, es mit einer neuen Seite weitergeht. Das kriege ich, verflixt nochmal, nicht hin. Bin ein Newbie in Rave.

Der Code sieht folgendermaßen aus:
Delphi-Quellcode:
procedure TForm1.Drucken2Click(Sender: TObject);
var MyPage: TRavePage;
    MyDataText: TRaveDataText;
    MyBand: TRaveBand;
    MyLine: TRaveHLine;
    MyRegion: TRaveRegion;
    MyText: TRaveText;
    nMarginBottom, nMarginLeft, nMarginRight, nMarginTop: Double;
    i,i1:integer;
    summe:extended;
begin
RvProject1.New;
MyPage := RvProject1.ProjMan.FindRaveComponent('Report1.Page1', Nil) As TRavePage;
MyPage.WasteFit := True;

//..........blablabla

//Daten
i:=0;
i1:=0;
summe:=0;
MyBand := MyRegion.CreateChild(TRaveBand, 'DetailBand') As TRaveBand;
MyBand.AllowSplit:=True;
MyBand.StartNewPage:=true;
Myband.FinishNewPage:=true;
MyBand.BandStyle.PrintOcc := MyBand.BandStyle.PrintOcc + [poFirst, poNewPage];

MyText := MyBand.CreateChild(TRaveText, 'Textii') As TRaveText;
MyText.Text:='Bauteile';
Mytext.Font.Style:=Mytext.Font.Style+[fsitalic];
MyText.FontJustify := pjLeft;
MyText.Left := myBand.Left;
MyText.Top := myBand.Top+1.3;
MyText.Width := 5;

MyText := MyBand.CreateChild(TRaveText, 'Textiii') As TRaveText;
MyText.Text:='Baulänge/-höhe [mm]';
Mytext.Font.Style:=Mytext.Font.Style+[fsitalic];
MyText.FontJustify := pjLeft;
MyText.Left := myBand.Left+5;
MyText.Top := myBand.Top+1.3;
MyText.Width := 3;

MyLine := MyBand.CreateChild(TRaveHLine, 'BottomLine1') As TRaveHLine;
MyLine.Left := MyBand.Left;
MyLine.Top:=MyBand.Top+1.5;
MyLine.Width := MyBand.Right;
MyLine := MyBand.CreateChild(TRaveHLine, 'BottomLine1_1') As TRaveHLine;
MyLine.Left := MyBand.Left;
MyLine.Top:=MyBand.Top+1.52;
MyLine.Width := MyBand.Right;

if gllistbox1.Items.Count>0 then begin
 repeat
  MyText := MyBand.CreateChild(TRaveText, 'Text'+inttostr(i1)) As TRaveText;
  MyText.Text:=gllistbox1.Items[i];
  MyText.FontJustify := pjLeft;
  MyText.Left := myBand.Left;
  MyText.Top := myBand.Top+1.5+0.2*(i+1);
  MyText.Width := 5;
  i1:=i1+1;

  MyText := MyBand.CreateChild(TRaveText, 'Text'+inttostr(i1)) As TRaveText;
  MyText.Text:=gllistbox2.Items[i];
  summe:=summe+strtofloat(gllistbox2.Items[i]);
  MyText.FontJustify := pjLeft;
  MyText.Left := myBand.Left+5;
  MyText.Top := myBand.Top+1.5+0.2*(i+1);
  MyText.Width := 5;
  i:=i+1;
  i1:=i1+1;

  //>>>HIER SOLL DANN DER SEITENUMBRUCH HINEIN, FALLS ZUVIELE DATEN.

  until gllistbox1.Items.Count=i;

  MyLine := MyBand.CreateChild(TRaveHLine, 'BottomLine2') As TRaveHLine;
  MyLine.Left := MyBand.Left;
  MyLine.Top:=myBand.Top+1.5+0.2*(i+2);
  MyLine.Width := MyBand.Right;

  i:=i+1;
  i1:=i1+1;
  MyText := MyBand.CreateChild(TRaveText, 'Text'+inttostr(i1)) As TRaveText;
  MyText.Text:='Summe Bauteile:';
  MyText.FontJustify := pjLeft;
  Mytext.Font.Style:=Mytext.Font.Style+[fsBold]+[fsunderline];
  MyText.Left := myBand.Left;
  MyText.Top := myBand.Top+1.5+0.2*(i+2);

  i1:=i1+1;
  MyText := MyBand.CreateChild(TRaveText, 'Text'+inttostr(i1)) As TRaveText;
  MyText.Text:=floattostr(summe)+' mm';
  MyText.FontJustify := pjLeft;
  Mytext.Font.Style:=Mytext.Font.Style+[fsBold];
  MyText.Left := myBand.Left+5;
  MyText.Top := myBand.Top+1.5+0.2*(i+2);

  MyLine := MyBand.CreateChild(TRaveHLine, 'BottomLine3') As TRaveHLine;
  MyLine.Left := MyBand.Left;
  MyLine.Top:=myBand.Top+1.5+0.2*(i+3);
  MyLine.Width := MyBand.Right;
 end
else begin

//....blablabla

//Ende Daten

RvProject1.ExecuteReport('Report1');
RvProject1.Close;
end;
Das Band liegt auf einer Region. Auf diese Band will ich dann alle Daten ausgeben.

Mit der Memo-Kompo kenn ich mich leider nicht aus. Die Hilfe von Rave ist ja auch nicht der Bringer.
  Mit Zitat antworten Zitat
merlin17

Registriert seit: 15. Dez 2002
Ort: Mittelfranken
980 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: Neue Seite im Rave-Report

  Alt 18. Aug 2003, 22:03
hallo,

MyBand := MyRegion.CreateChild(TRaveBand, 'DetailBand') As TRaveBand;

sollte ein TRaveDataband sein und mit der Dataview verbunden werden.
die dataview kannst du auch dynamisch erstellen (ich kenne jetzt die details der applikation nicht, aber würde in richtung customconnection bei den daten gehen....)
dann ist der seitenwechsel etc. von rave selber realisiert.

alternativ geht es auch über rvSystem.execute... hier sind viele codebase-möglichkeiten versteckt; schaue einmal das video von
lino an:
http://www.falafelsoft.com/Videos/SWF/IWPDF.html
mit diesem trick kannst du mit ein paar zeilen pascal tolle reports erstellen ohne rave-ide oder rave-stream bastelaktion, welches du ja bereits realisiert hast (mit tip#79 der nevrona-tipsundtricks-seite oder ??)

hope, this helps.

:-) thomas

schicke mir evtl. mal eine ndr-datei von dem report.
- TeamNevrona cannot respond to questions received via email -
http://rave-notes.blogspot.com
  Mit Zitat antworten Zitat
Mikko

Registriert seit: 23. Jan 2003
Ort: Baden
65 Beiträge
 
#5

Re: Neue Seite im Rave-Report

  Alt 19. Aug 2003, 19:20


Dein Video hat mir den entscheidenden Tip gegeben. Den ganzen Code des Reports (siehe oben) muß man in das OnPrint-Ereignis des RVSystem eingeben. Dann kann man mit rvsystem1.BaseReport.NewPage eine neue leere Seite manuell erstellen. Das reicht mir schon aus. *freu*

Ja, der Code ist von der Tips-und-Tricks-Seite. Mit dem Report zur Laufzeit kann man auf verschiedene Ereignisse gut reagieren und den Report entsprechend ändern. Das ist wichtig für meine Entscheidungsfreiheit.

Thx Merlin für deine Hilfe!!!
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:08 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