DB Folder Browse in a sub-classed TppSubReport
Hello,
I have an end-user application using dictionaries and your custom
report explorer (with minor changes).
I have sub-classed TppSubReport and would like to provide a db folder
browse to the user off of the right click menu of the sub-report
component in the main report. I have tried
'Report.Template.ShowDBOpenDialog' inside of the sub-classed
PopupMenuClick but I get an AV.
I believe it is because the eventual open dialog has no report
explorer assigned. How would I do that?
If I use 'Band.Report.MainReport.Template.ShowDBOpenDialog' I am OK
but it changes the DatabaseSettings.Name of the main report which I
don't want. I am really only concerned with the sub report.
I may not want to actually load the sub-report, at first I just want
the user to select one.
I think I am going at this the wrong way - can you point me back on
track?
Thanks
Rick Matthews
Dartek Systems Inc.
I have an end-user application using dictionaries and your custom
report explorer (with minor changes).
I have sub-classed TppSubReport and would like to provide a db folder
browse to the user off of the right click menu of the sub-report
component in the main report. I have tried
'Report.Template.ShowDBOpenDialog' inside of the sub-classed
PopupMenuClick but I get an AV.
I believe it is because the eventual open dialog has no report
explorer assigned. How would I do that?
If I use 'Band.Report.MainReport.Template.ShowDBOpenDialog' I am OK
but it changes the DatabaseSettings.Name of the main report which I
don't want. I am really only concerned with the sub report.
I may not want to actually load the sub-report, at first I just want
the user to select one.
I think I am going at this the wrong way - can you point me back on
track?
Thanks
Rick Matthews
Dartek Systems Inc.
This discussion has been closed.
Comments
procedure TMyHeader.CreatePopupMenu(AOwner : TComponent; var APopupMenu :
TppPopupMenu);
begin
inherited CreatePopupMenu(AOwner, APopupMenu);
if Assigned(APopupMenu) then
begin
FMenuItemSeparator := TMenuItem.Create(self);
FMenuItemSeparator.Caption := '-';
APopupMenu.Items.Insert(0, FMenuItemSeparator);
FMenuItemBrowse := TMenuItem.Create(self);
FMenuItemBrowse.Caption := 'Browse..';
FMenuItemBrowse.OnClick := OnClickBrowse;
APopupMenu.Items.Insert(0, FMenuItemBrowse);
end;
end;
Samuel.
Thanks for the help. I had already overridden the CreatePopupMenu.
My problems started after that with what I was using to provide a
browse for the user to select the report template from the
folders/items tables. Do you know what I can use?
Additionally loading the template (once defined by the user) in the
overridden local StartOfMainReport procedure (as per the dm provided
dynamic subreport example) caused problems if the subreport had a
datapipeline assigned (AV). Any idea what I need to do there?
Basically I want the user to assign a pre-defined template to a
sub-report for retrieval when run but allow the user to assign the
actual datapipleline (if any) as part of the main report.
Thanks,
Rick Matthews
I'm not an expert (yet) but I can tell you what I've done so far. I needed
something very similar : let the end user drop a dynamically loaded sub
report and then let them browse the file system for a template.
I used the CreatePopupMenu to add a 'Browse..' menu and in the OnClick I
show a TOpenFileDialog. The resulting filename I store in a new property of
TppSubReport, so that the filename gets stored in the actual rtm file. In
the StartOfMainReport I then load the sub report template if the
TppSubReport.FileName exists. It shouldn't be too hard to replace this
TOpenFileDialog with a database lookup screen.
When that dynamically loaded report contains a datapipeline
(TPvQueryDataView) of it's own, I noticed that the whole report would not
run because the TPvDataSet on the sub report never got initialised. I got
around that by setting the subreports'
TPvQueryDataView(Report.DataPipeline.DataView).Active property to False and
then to True, just after loading the sub report from file. I guess your AV
might be related to this..
The only imperfection I am still left with is the fact that whenever you
preview the whole report, the dataview of the sub report is merged with the
dataview of the main report, so after 5 previews you end up with 5 times the
datapipeline of your sub report merged into the main reports' dataview. I am
still hopefull to solve this last piece of the puzzle.
Hope this helps,
Samuel.
That gives me some clues. My current requirements are a little
different than yours but I would be interested in seeing what you come
up with (here or email) once you sort out all of your issues.
Cheers,
Rick