Home General
New Blog Posts: Merging Reports - Part 1 and Part 2

Delphi XE + RB 12.03 + TppDesigner in a DataModule

edited November 2010 in General
Hi, I have a datamodule containing some TppDBPipeline (with ClientDatasets),
a TppReport ad a TppDesigner, this is used for print all the report needed
in the application. With the Designer I can also give to the user the modify
feature for the reports.

I migrate the project from D2010 (no modification needed...) to DXE, all
work perfect until I open a report in the designer, I can modify without any
problem any report and save it... but when i close the program i have an
exception, an "ETreeViewError - List index out of bounds (199)"...

This happens only on DXE not with the D2010, and only if I open the
designer; if I use the reportbuilder to print reports I haven't.

The applicazion is an MDI Application, but the datamodule, containing all
the RBuilder components was created in auto.

I have another application, where the designer is in a MDI form and I
haven't any problem..

Someone have any ideas? I checked for destruction of my object but are all
destroyed in the right time... I cannot debug the error becouse is out of my
code.

Many thanks in advance,

Cristiano.

Comments

  • edited November 2010
    I have some additional information, i added the source directory of
    reportbuilder to see where is the error in the code, and I found something,
    is the line 1334 of the ppTreeVw who generate the error:

    for liIndex := lComponentNode.Count-1 downto 0 do
    begin
    lChildNode := lComponentNode.Item[liIndex]; <<<<< --- this
    line...

    if (TObject(lChildNode.Data) is TComponent) then
    TreeView.RemoveComponent(TComponent(lChildNode.Data));
    end;

    If I continue, I have an access violation, at address 00000, at line 2406 of
    ppTBX

    VT := GetWinViewType(TppTBXToolbar(Owner));
    if (VT and VT_TOOLBAR) = VT_TOOLBAR then
    begin
    if AOrientation = tbvoFloating then VT := VT or TVT_FLOATING
    else VT := VT and not TVT_FLOATING
    end
    else if (VT and VT_DOCKPANEL) = VT_DOCKPANEL then
    begin
    if AOrientation = tbvoFloating then VT := VT or DPVT_FLOATING
    else VT := VT and not DPVT_FLOATING
    end;
    CurrentTheme.GetViewMargins(VT, M); <<<< - This line
    Margins.Left := M.LeftWidth;
    Margins.Top := M.TopHeight;
    Margins.Right := M.RightWidth;

    and if I continue again the program, after much time, have a "runtime error
    216"...

    Thanks in advance.

    Cristiano




    "Cristiano Narcisi" <cristiano.narcisi@alfagomma.com> ha scritto nel
  • edited November 2010
    Hi Cristiano,

    We have not seen this behavior before. Are you able to recreate the issue
    with a simple demo app? If so, please send the example in .zip format to
    support@digital-metaphors.com in .zip format and we'll take a look at it for
    you.



    Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
  • edited November 2010
    This is a multi-part message in MIME format.
  • edited November 2010
    Hi Cristiano,

    For future reference, please send all attachments to
    support@digital-metaphors.com rather than posting them here.

    I tested your example with Delphi XE Update 1 and RB 12.03 but was not able
    to recreate the issue. Below are the steps I took.

    1. Ran your application.
    2. Clicked the Simple Test Designer button.
    3. Tabbed from Design to Preview, then to Calc, and back to Design.
    4. Closed the designer and application.


    Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
This discussion has been closed.