Home Subreports

AVs and "The outline participant does not support the IppOutlineParticipant interface"

edited March 2003 in Subreports
Something is not right with RB 7.02. After I upgraded from 6.03, some of my
most advanced reports are broken - I get Access Violation errors once I try
to preview them.

The problem seems to apply only to reports that dynamically load subreports
which in turn have their own (fixed) subreports. (I use a custom component
based on the code in the "RBuilder\Demos\3. EndUser\5. Dynamic Subreport
Loading" directory.)

I think the error has something to do with the new outline concept, because
occasionally I get this error message instead of the AV:

"TppOutline.CreateNodeCreator: The outline participant does not support the
IppOutlineParticipant interface"

I have also seen "Canot focus a disabled window".

I get the impression that outlining is disabled for these old converted
reports, but I have also tried to programatically set
Report.OutlineSettings.Enabled := false
before and after Report.loadfromdatabase. But to no avail.

How to get my old reports to work again? Could there be a bug with the RB
outline system, or something new that has to be added to my dynamical
subreport component, to take care of outline support with nested subreports?
Note that I do not need the outline system at all, I upgraded to RB7 for the
bug fixes only...:\

--

Mvh/regards
Svein Olav Mytting
Bogstadvn 60A, 0366 Oslo

Comments

  • edited March 2003
    Our Dynamic Subreport Loading demos work correctly in tests here- the
    outline is disabled. When enabling the outline, there is the correct message
    in that drill down is not supported, which is the case in our demos because
    they are drill down. I changed a demo to be a non-drill down subreport and
    changed the layout so that the subreport is fixed style and it the outline
    worked correctly. At first, the default is to not show the outline. Then
    after enabling it, the outline showed the nodes correctly for the report.

    Could you send a minimal demo which has a simple dynamic subreport and shows
    the problem to support@digital-metaphors.com and a description of how to
    reproduce the problem. What does your subreport class descend from?

    Cheers,

    Jim Bennett
    Digital Metaphors


  • edited March 2003
    My problem with Access Violation errors for Dynamic Subreport Loading can be
    easily reproduced using the sample code that comes with RB 7.02. No code
    changes are needed:

    1. Edit the myTitleTemplate.rtm of the "Dynamic Supreport Loading" demo
    project. Give the company name a new color that you recognize. Add a
    standard subreport component that covers about the top half of the detail
    band. Move the company name and address to this subreport. Preview to check
    that you still have a complete working template. Save and close template.

    2. Open and run the "Dynamic Subreport Loading" demo project. Preview the
    Header report, or the title-header-footer report. You should get an Access
    Violation error.

    3. Result should be the same if you edit myTitleTemplate in the database
    (adjusting the settings INI file accordingly), rather than the one in the
    .rtm file.

    Using Delphi 6up2, RB 7.02 Enterprise, Windows XP. The above used to work
    fine under RB6.


  • edited March 2003
    I now get the AV. We'll research the issue.


    Cheers,

    Jim Bennett
    Digital Metaphors


  • edited April 2003
    To solve the issue, change the dynamic subreport loading demo class:

    Modify these two routines to look like this and retest:

    procedure TmyDynamicLoadingSubReport.LoadSubreport;
    begin

    if (Band is TppTitleBand) then
    LoadTitleSubreport

    else if (Band is TppHeaderBand) then
    LoadHeaderSubreport

    else if (Band is TppFooterBand) then
    LoadFooterSubreport;

    end; { procedure, LoadSubreport }

    procedure TmyDynamicLoadingSubReport.StartOfMainReport;
    begin

    if (AutomatedLoad) and not(Overflow) then
    LoadSubreport;

    inherited StartOfMainReport;

    end; { procedure, StartOfMainReport }


    Cheers,

    Jim Bennett
    Digital Metaphors


This discussion has been closed.