Where do I control which help is displayed when a user is on the calc tab and they select Help-Help Contents from the menu? Currently it displays rbuilder.hlp but for end users it really doesn't make sense. We are using RBP 9.03.
Thanks Nico for the response. There's a problem though. Our help files are in chm format - if I set the HelpFile, nothing displays. Now that I think about it, we ran into this issue when we switched to chm. To resolve the issue, I override the assignment of mniHelpContents.OnClick method using my own method and call ShellExecute. Unfortunately, I can't seem to find the event for the Calc tab's OnClick event. Any idea how to support chm files? I know it's not as easy to point directly to the menu item in the designer because it may not even be there. Any other ideas?
Try using the TppDesigner.OnTabChanged event to determine which tab is currently selected. Then you can use the Form.MainMenu property to access the menu items and customize them any way you need.
I'm still having issues with this. I implemented what you wrote and it doesn't see it. I believe there is a merge menu going on after the OnTabChanged event fires which prevents me from accessing the correct menu item.
Here's some code I quickly put together:
procedure TVReportController.OnDesignerTabChanged(Sender: TObject); var vReportDesigner: TppDesignerWindow; i: integer; vMI1: TMenuItem; begin vReportDesigner := (Sender as TppDesignerWindow);
Application.ProcessMessages;
for i:= 0 to vReportDesigner.ComponentCount-1 do begin if (vReportDesigner.Components[i] is TMenuItem) then begin vMI1 := TMenuItem(vReportDesigner.Components[i]); if AnsiContainsText(vMI1.Caption, 'Topics') then vMI1.Caption := 'I found you'; end; end; end;
It changes the one on the Design and Preview tabs but not the Calc tab.
Are you certain the code you have below is firing? If so, this may be a limitation of RB 9.x. I did some testing with RB 10.06 and verified that it is possible to accomplish with that version.
It fires but the new Help menu (most likely the one merged on the Calc tab) does not update properly. I have a feeling the OnTabChanged event fires before the main menu is merged.
Yes, this must be what is happening. I do not have older versions of ReportBuilder available to test with so I'm unsure if there is a way to work around this limitation.
Comments
You can use the TppDesigner.HelpFile property to define which help file you
would like to use from the end-user designer.
--
Regards,
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
in chm format - if I set the HelpFile, nothing displays. Now that I think
about it, we ran into this issue when we switched to chm. To resolve the
issue, I override the assignment of mniHelpContents.OnClick method using my
own method and call ShellExecute. Unfortunately, I can't seem to find the
event for the Calc tab's OnClick event. Any idea how to support chm files? I
know it's not as easy to point directly to the menu item in the designer
because it may not even be there. Any other ideas?
Try using the TppDesigner.OnTabChanged event to determine which tab is
currently selected. Then you can use the Form.MainMenu property to access
the menu items and customize them any way you need.
--
Regards,
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
I'm still having issues with this. I implemented what you wrote and it
doesn't see it. I believe there is a merge menu going on after the
OnTabChanged event fires which prevents me from accessing the correct menu
item.
Here's some code I quickly put together:
procedure TVReportController.OnDesignerTabChanged(Sender: TObject);
var
vReportDesigner: TppDesignerWindow;
i: integer;
vMI1: TMenuItem;
begin
vReportDesigner := (Sender as TppDesignerWindow);
Application.ProcessMessages;
for i:= 0 to vReportDesigner.ComponentCount-1 do
begin
if (vReportDesigner.Components[i] is TMenuItem) then
begin
vMI1 := TMenuItem(vReportDesigner.Components[i]);
if AnsiContainsText(vMI1.Caption, 'Topics') then
vMI1.Caption := 'I found you';
end;
end;
end;
It changes the one on the Design and Preview tabs but not the Calc tab.
Any other ideas?
Are you certain the code you have below is firing? If so, this may be a
limitation of RB 9.x. I did some testing with RB 10.06 and verified that it
is possible to accomplish with that version.
--
Regards,
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
It fires but the new Help menu (most likely the one merged on the Calc tab)
does not update properly. I have a feeling the OnTabChanged event fires
before the main menu is merged.
Thanks.
Yes, this must be what is happening. I do not have older versions of
ReportBuilder available to test with so I'm unsure if there is a way to work
around this limitation.
--
Regards,
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com