Replacing the Preview Data dialog.
Hi,
I'm trying to replace the standard Preview Data dialog which is accessed
from the preview button
on the table dataview windows in the Data tab.
I've followed the example on the RB wiki for replacing the print dialog but
I'm having some issues getting my custom dialog to display.
I've added my new unit to the project and registered the class in the init
and finalization sections. (See below)
I can see when I run my app, the initialization section gets run but when I
attempt to open the dialog by clicking on the preview button, nothing
happens. Not even the standard dialog displays.
I've placed a breakpoint on the new dialog constructor but it never seems to
get called.
Is there some detail I am missing?
Thanks,
Chris Hedges
//my class
TmyPreviewDataDialog = class(TdaCustomPreviewDataDialog)
blah
blah
//register the new form
initialization
ppRegisterForm(TdaCustomPreviewDataDialog, TmyPreviewDataDialog);
finalization
ppUnRegisterForm(TdaCustomPreviewDataDialog);
I'm trying to replace the standard Preview Data dialog which is accessed
from the preview button
on the table dataview windows in the Data tab.
I've followed the example on the RB wiki for replacing the print dialog but
I'm having some issues getting my custom dialog to display.
I've added my new unit to the project and registered the class in the init
and finalization sections. (See below)
I can see when I run my app, the initialization section gets run but when I
attempt to open the dialog by clicking on the preview button, nothing
happens. Not even the standard dialog displays.
I've placed a breakpoint on the new dialog constructor but it never seems to
get called.
Is there some detail I am missing?
Thanks,
Chris Hedges
//my class
TmyPreviewDataDialog = class(TdaCustomPreviewDataDialog)
blah
blah
//register the new form
initialization
ppRegisterForm(TdaCustomPreviewDataDialog, TmyPreviewDataDialog);
finalization
ppUnRegisterForm(TdaCustomPreviewDataDialog);
This discussion has been closed.
Comments
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,
ppForms,
daForms, daDataView;
type
TmyDataPreview = class(TdaCustomPreviewDataDialog)
private
{ Private declarations }
public
{ Public declarations }
end;
var
myDataPreview: TmyDataPreview;
implementation
{$R *.dfm}
initialization
ppRegisterForm(TdaCustomPreviewDataDialog, TmyDataPreview);
finalization
ppUnRegisterForm(TmyDataPreview);
end.
--
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
I've tried even using your simple example and I get the same result (nothing
displays).
Unfortunately I'm using a pretty old version (10.9) and its unlikely that
I'll be able to upgrade at the moment
so I'm attempting to debug and see what is happening.
I can see that when the Preview button is clicked, it calls
TdaCustomDataPreviw.Preview in the daDataView unit.
This contains the following lines.
lFormClass := PreviewFormClass;
if (lFormClass = nil) or not
lFormClass.InheritsFrom(TdaCustomPreviewDataDialog) then Exit;
Tracing into PreviewFormClass shows the below is getting executed. The
result is always false.
Is it looking for the wrong class?
{ TdaADOQueryDataView.PreviewFormClass }
class function TdaADOQueryDataView.PreviewFormClass: TFormClass;
begin
Result := TFormClass(GetClass('TdaPreviewDataDialog'));
end; {class function, PreviewFormClass}
Thanks for your assistance,
Chris Hedges
I changed the below method to be....
class function TdaADOQueryDataView.PreviewFormClass: TFormClass;
begin
// Result := TFormClass(GetClass('TdaPreviewDataDialog'));
Result := ppGetFormClass(TdaCustomPreviewDataDialog);
end; {class function, PreviewFormClass}
Does that seem correct? I now get my form displayed
Thanks,
Chris.
Glad you found a solution. In the future please specify the RB version you
are using
Going forward hope you will be upgrading to RB 12, which includes many
powerful new features.
Here is a link to What's New for RB 12. (Use the side menu to navigate to
more detail and to see what was added for prior releases).
http://www.digital-metaphors.com/rbWiki/General/What's_New/RB_12
Also note that we have launched rbWiki, a great RB 'How To' resource that
contains hundreds of tech tips and downloadable code examples.
http://www.digital-metaphors.com/rbWiki
--
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com