TagStr property for TfrxMasterData
Why doesn't TfrxMasterData have a TagStr property?
Unfortunately, because that would easily solve my problem.
Actually, I would like to know on which page or in which MasterData instance of the preview which dataset is displayed in order to be able to read a certain field from the dataset there.
Unfortunately, it was not possible for me to get an assignment to the dataset record from frxReport1.PreviewPages.Page[i].AllObjects or to be able to read its values.
E.g. with TfrxMasterData all index values are 0 or useless (because they are the same everywhere), DataSet is nil and VirtualDataSet has RecordCount=0.
A value can be returned in the TagStr for a TfrxMemoView or TfrxBarCodeView. [WorkSql."esl_barcode"]
But since this is supposed to be a general feature, I don't know what will be on the report. A TfrxMasterData is definitely on it, but I can't use variables anywhere there. (manually in FastScript is not practical)
Searching everything else on each page or below the masterrecord would work, but isn't that unnecessarily cumbersome?
usually one page per dataset-record
but e.g. in case of alignment errors
--- Page 0 ---
TfrxNullBand
TfrxMasterData MasterData1
TfrxMemoView Memo2
TfrxMemoView Memo3
TfrxBarCodeView BarCode1
TfrxMemoView Memo4
TfrxMemoView Memo5
--- Page 1 ---
TfrxMasterData MasterData1
TfrxBarcode2DView Barcode2D1
--- Page 2 ---
TfrxMasterData MasterData1
TfrxMemoView Memo2
TfrxMemoView Memo3
TfrxBarCodeView BarCode1
TfrxMemoView Memo4
TfrxMemoView Memo5
--- Page 3 ---
TfrxMasterData MasterData1
TfrxBarcode2DView Barcode2D1
for i := 0 to frxReport1.PreviewPages.Count - 1 do begin OutputDebugString(PChar('--- ' + IntToStr(i) + ' ----------------------------------')); OutputDebugString(PChar(frxReport1.PreviewPages.Page[i].DataSet.SecureClassName + ' ' + frxReport1.PreviewPages.Page[i].DataSet.SecureName)); for P in frxReport1.PreviewPages.Page[i].AllObjects do begin OutputDebugString(PChar(TObject(P).SecureClassName + ' ' + TComponent(P).SecureName)); if TObject(P) is TfrxMemoView then OutputDebugString(PChar(' tag ' + TfrxMemoView(P).TagStr)); // super if TObject(P) is TfrxMasterData then begin //OutputDebugString(PChar(' tag ' + TfrxMasterData(P).TagStr)); // not exists OutputDebugString(PChar(' cnt ' + IntToStr(TfrxMasterData(P).VirtualDataSet.RecordCount))); // 0 OutputDebugString(PChar(' fld ' + TfrxMasterData(P).VirtualDataSet.Fields.CommaText)); // empty OutputDebugString(PChar(' bar ' + VarToStr(TfrxMasterData(P).VirtualDataSet.Value['rem_barcode']))); // empty end; end; end;