Autor |
Beitrag |
NOS1971
      
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Mo 03.02.14 20:08
Hallo zusammen,
ich versuche einen Report zu generieren und habe es soweit im Griff das ich meine Texte etc. gesetzt bekomme. Nun bin ich an dem Punkt wo ich eine StringList ausgeben möchte und habe das entsprechend dem Beispiel auch alles in meine Software integriert mit dem Ergebnis dass das GetValue des Reports nicht aufgerufen wird. Die DataSet Compo ist auf dme Mainform vorhanden. Länge wird vor dem Erzeugen des Reports auch per Code gesetzt. Zum Schluss erscheint sooft wie ich in der StringList Werte habe der Name der Komponente. Dann habe ich gecheckt ob die GetValue Routine gecalled wird aber da passiert nix.
ANy idea ?
Grüße und Dank vorab,
Andreas
Einloggen, um Attachments anzusehen!
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Mo 03.02.14 20:50
Implementier mal OnNewGetValue des UserDataset... wird die aufgerufen?
Grüße
|
|
NOS1971 
      
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Mo 03.02.14 20:59
Lemmy hat folgendes geschrieben : | Implementier mal OnNewGetValue des UserDataset... wird die aufgerufen?
Grüße |
wird auch nicht aufgerufen ... die demo läuft aber einwandfrei ...
Hier mal mein Code der generate routine
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| tbpSpiderPager.ActivePageIndex := 2;
KeywordList.RangeBegin := rbFirst; KeywordList.RangeEnd := reCount; KeywordList.RangeEndCount := MultiThreadedWebAnalyser.CompleteKeywordList.Count;
Report.PreviewOptions.ThumbnailVisible := true; Report.ShowReport; |
und die OnBeforePrint
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| procedure TfrmWebsiteSpider.ReportBeforePrint(Sender: TfrxReportComponent); begin if Sender.Name = 'memoAnalysisReportName' then TfrxMemoView(Sender).Text := sReportWebSiteAnalysisOf; if Sender.Name = 'memoAnalysisDomainName' then TfrxMemoView(Sender).Text := MultiThreadedWebAnalyser.AnalyseURL; if Sender.Name = 'memoAnalysisCreatedWith' then TfrxMemoView(Sender).Text := sReportCreatedWith; if Sender.Name = 'memoCreationDateLabel' then TfrxMemoView(Sender).Text := sReportCreatedAtDate + ':'; if Sender.Name = 'memoCreationTimeLabel' then TfrxMemoView(Sender).Text := sReportCreatedAtTime + ':'; if Sender.Name = 'memoCreationDate' then TfrxMemoView(Sender).Text := DateToStr(MultiThreadedWebAnalyser.StartTime); if Sender.Name = 'memoCreationTime' then TfrxMemoView(Sender).Text := TimeToStr(MultiThreadedWebAnalyser.StartTime) + ' ' + sReportClock; if Sender.Name = 'memoAnalysedDomain' then TfrxMemoView(Sender).Text := MultiThreadedWebAnalyser.AnalyseURL; if Sender.Name = 'memoAnalysedDomainLabel' then TfrxMemoView(Sender).Text := sReportAnalysedURL + ':'; if Sender.Name = 'memoNeededTime' then TfrxMemoView(Sender).Text := TimeToStr(MultiThreadedWebAnalyser.StopTime - MultiThreadedWebAnalyser.StartTime) + ' (' + inttostr(SecondsBetween(MultithreadedWebAnalyser.StopTime, MultiThreadedWebAnalyser.StartTime)) + ' ' + sSeconds + ')'; if Sender.Name = 'memoNeededTimeLabel' then TfrxMemoView(Sender).Text := sReportNeededTime + ':'; if Sender.Name = 'memoURLBasicData' then TfrxMemoView(Sender).Text := sReportURLBasicData; if Sender.Name = 'memoAnalysedLinksLabel' then TfrxMemoView(Sender).Text := sReportAnalysedLinks + ':'; if Sender.Name = 'memoAnalysedLinks' then TfrxMemoView(Sender).Text := IntToStr(MultiThreadedWebAnalyser.ProgressData.AnalysedCount); if Sender.Name = 'memoProcessedLinksLabel' then TfrxMemoView(Sender).Text := sReportProcessedLinks + ':'; if Sender.Name = 'memoProcessedLinks' then TfrxMemoView(Sender).Text := IntToStr(MultiThreadedWebAnalyser.ProgressData.ProcessedCount); if Sender.Name = 'memoFoundKeywords' then TfrxMemoView(Sender).Text := IntToStr(MultiThreadedWebAnalyser.CompleteKeywordList.Count); if Sender.Name = 'memoFoundKeywordsLabel' then TfrxMemoView(Sender).Text := sDifferentFoundKeywords + ':'; if Sender.Name = 'memoURLBasicData' then TfrxMemoView(Sender).Text := sURLBasicData; if Sender.Name = 'memoGlobalKeywordData' then TfrxMemoView(Sender).Text := sDifferentFoundKeywords;
end; |
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Mo 03.02.14 21:40
nein, nochmal von vorne. Die Komponente "KeyWordList" - was ist das? Eine TfrxUserDataset? Dann implementier von dieser Komponente die OnNewGetValue - nix vom Report. Und selbstverständlich auch alle anderen notwendigen Ereignisse (OnFirst, ....) Damit iterierst Du durch deine Datenmenge und kannst die Daten an den Report senden.
Wenn Du nur einen Datensatz hast, dann kannst Du das auch über Variablen lösen, dann brauchst Du auch kein MasterDataset
|
|
NOS1971 
      
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Mo 03.02.14 22:00
Also ...
KeywordList ist ein tfrxUserDataSet ... es kommen noch verschiedene stringgrids oder listen mit mehreren spalten dazu später ... hier ist es eine liste genutzter keywords einer url bzw einer gesamten gespiderten webseite
auch von dem DataSet wird weder GetValue noch NewGetValue aufgerufen
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Mo 03.02.14 22:19
Und die restlichen Events hast Du auch implementiert (OnCheckEOF, OnFirst, OnNext, onPrior)? Kannst Du mal das Projekt hier rein stellen oder ist das zu umfangreich?
|
|
NOS1971 
      
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Mo 03.02.14 22:22
Lemmy hat folgendes geschrieben : | Und die restlichen Events hast Du auch implementiert (OnCheckEOF, OnFirst, OnNext, onPrior)? Kannst Du mal das Projekt hier rein stellen oder ist das zu umfangreich? |
nein ... die anderen events habe ich nicht genutzt ... im moment, so als rookie, wüsste ich auch nicht was da rein sollte ... zum reinstellen ist es zu umfangreich ... ich nutze noch tms und andere compos und der spider etc. hängt auch mit drin
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Mo 03.02.14 22:56
Also, du hast eine Liste, z.B: deine Stringlist mit dem schönen Namen "Werte", dann brauchst Du noch einen Zeilenzähler z.B. AktuelleZeile
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| OnCheckEOF:
AktuelleZeile >= Werte.Count;
OnPrior: Dec(AktuelleZeile);
OnNext: Inc(AktuelleZeile);
OnFirst:
AktuelleZeile := 0; |
|
|
NOS1971 
      
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Mo 03.02.14 23:01
Wird das denn nicht in KeywordList.RecNo automatisch gehandelt ... ich hatte es so verstanden das ich dem datensatz sage wie er zählen soll und wie hoch die anzahl der einträge ist und er dann x mal das getvalue aufruft ... so ist es in der demo auch
bye the way sollte es auch so funzen das ich in der GetValue des Reports folgendes mache
Delphi-Quelltext 1: 2:
| if CompareText(VarName, 'memoKeyword') = 0 then Value := MultiThreadedWebAnalyser.CompleteKeywordList[KeywordList.RecNo]; |
ich habe das gefühl irgendwas dummes fehlt noch was ich übersehe ... leider ist die docu an der stelle auch sehr dürftig gestaltet finde ich
|
|
NOS1971 
      
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Mi 05.02.14 17:17
Und ich hatte Recht  ... es war mal wieder was total dummes ... es funktioniert einwandfrei über den report.getvalue event ... wichtig ist, und das war der einzige fehler, das der text des memos im masterdata band des reports mit dem namen "memoKeywordList" in eckige Klammern gefasst wird -> also "[memoKeywordList]"
Thats all 
|
|