Custom print preview
Thank you so much for breaking my code in RB6. I've been using the
same custom print preview since December of 1999, with only minor
rewrites. Now I can't even get it to compile.
What was I doing? Overriding TppPrintPreview, then registering my new
custom previewer. Of course now I can't refer to ppViewer1,
spbPreviewClose, and who knows what else.
So what am I supposed to do now?
It wouldn't be so bad if you had bothered to document
TppCustomPreviewer, Viewer, etc.
Any other "gotchas" in RB6?
++++
Bill Sorensen, Programmer/Analyst, ASI/EDI Inc.
(opinions are mine alone)
bsorensen@asicentral.com
www.asiedi.com
same custom print preview since December of 1999, with only minor
rewrites. Now I can't even get it to compile.
What was I doing? Overriding TppPrintPreview, then registering my new
custom previewer. Of course now I can't refer to ppViewer1,
spbPreviewClose, and who knows what else.
So what am I supposed to do now?
It wouldn't be so bad if you had bothered to document
TppCustomPreviewer, Viewer, etc.
Any other "gotchas" in RB6?
++++
Bill Sorensen, Programmer/Analyst, ASI/EDI Inc.
(opinions are mine alone)
bsorensen@asicentral.com
www.asiedi.com
This discussion has been closed.
Comments
error, and reading the source code.
1. Create a class that descends from TppPreview. (This is simpler
than descending from TppCustomPreview.)
2. Override methods such as BeforePreview and KeyDown.
3. Parent will be the preview form, generally (check before cast).
4. Viewer and Report are the other properties you may want to access.
Note that until you call inherited in BeforePreview, Report is nil.
5. Call PerformPreviewAction as desired. Note that this may attempt
to set the focus (a bad idea when the form isn't visible).
This is a particularly poor design, for several reasons. First,
clicking any of the toolbar controls will change the focus, so KeyDown
will no longer be called. Second, it's completely non-visual; see the
wonderful code in procedure TppPreview.CreateToolbarControls
(ppPreview.pas). I'd rather write Swing without JBuilder.
Looks like somebody read a book on design patterns and decided to
refactor the preview code. Next time, consider things like "backwards
compatibility" and "clear documentation."
If it ain't broke, don't refactor it.
On Mon, 30 Jul 2001 11:00:17 -0500, William Sorensen
then get access to the KeyDown event. We apologize for breaking your code.
Cheers,
Jim Bennett
Digital Metaphors
http://www.digital-metaphors.com
info@digital-metaphors.com
controls are created in code. The advantage is that this previewer is
modifiable both in the report designer and on the viewer. However, it
doesn't have to be created through code. The replacable form approach, which
has been in the product for a long time, should still working as it always
did. The problem with the form based approach is that you can't change the
previewer in the report designer. Run the Tutorials Complete project in the
RB installation for an example of the old way of creating a custom
previewer- it should still work. You don't have to create everything in
code:)
The keydown isn't firing, hmm...we'll have to look into this. Thankyou for
the feedback.
Cheers,
Jim Bennett
Digital Metaphors
http://www.digital-metaphors.com
info@digital-metaphors.com
Thats not the problem. The problem is that I used something like this:
----
{ DruckVorschau }
if FForm is TppPrintPreview then begin
if not TppPrintPreView(FForm).ppViewer1.ScrollBox.VertScrollBar.Visible then begin
if (Key = VK_NEXT) and (Shift = []) then begin
TppPrintPreView(FForm).ppViewer1.NextPage;
exit;
end;
if (Key = VK_PRIOR) and (Shift = []) then begin
TppPrintPreView(FForm).ppViewer1.PriorPage;
exit;
end;
if (Key = VK_HOME) and (Shift = []) then begin
TppPrintPreView(FForm).ppViewer1.FirstPage;
exit;
end;
if (Key = VK_END) and (Shift = []) then begin
TppPrintPreView(FForm).ppViewer1.LastPage;
exit;
end;
end;
if Shift = [ssAlt] then begin
if (Key = VK_ADD ) and (TppPrintPreView(FForm).ppViewer1.ZoomPercentage < 150) then begin
TppPrintPreView(FForm).ppViewer1.ZoomPercentage := TppPrintPreView(FForm).ppViewer1.ZoomPercentage +
1;
TppPrintPreView(FForm).ppViewer1.OnPageChange(Nil);
Exit;
end;
if (Key = VK_SUBTRACT )and (TppPrintPreView(FForm).ppViewer1.ZoomPercentage > 0)then begin
TppPrintPreView(FForm).ppViewer1.ZoomPercentage := TppPrintPreView(FForm).ppViewer1.ZoomPercentage -
1;
TppPrintPreView(FForm).ppViewer1.OnPageChange(Nil);
exit;
end;
if (Key = Ord('D')) or (Key = Ord('d')) then begin
TppPrintPreView(FForm).ppViewer1.Print;
exit;
end;
end;
{ Ctrl-P für Drucken }
if ((Key = Ord('P')) or (Key = Ord('p'))) and (Shift = [ssCtrl]) then begin
TppPrintPreView(FForm).ppViewer1.Print;
exit;
end;
end;
----
and TppPrintPreview.ppViewer1 is now not longer available or much more complicate.
Thanks for support.
Gruß aus den Bergen
Günter
of the TppCustomPreview class.
Cheers,
Jim Bennett
Digital Metaphors
http://www.digital-metaphors.com
info@digital-metaphors.com