Report designer in mdi child mode

ccyccy
edited 8:27AM in FastReport 4.0
Hi,

The changes in Fast Report 4 states that the Report Designer able to in non-modal mode, mdi child mode.

However, I found this changes is uesless and serve no purpose. If we create more than one instance of report designer. The Fast report will prompt access violation. Is this a bug or we can't work on more than one designer at the same time in the same process?

Comments

  • edited 8:27AM
    You can run only one instance of FastReport designer. It's by design.
  • ccyccy
    edited 8:27AM
    Will this behavior be enhanced in next version? It doesn't seems a good design in term of OO. I can create more than one instance of designer in Report Builder and it works fine.

    Another problem I found out is we can't open 2 preview windows at the same time in Fast Report. Is this the same problem too?
  • edited 8:27AM
    This is impossible now due to docking behavior.
    Regarding preview: one TfrxReport can open one preview window. If you need 2 - use 2 TfrxReport.
  • ccyccy
    edited November 2006
    Even if each TfrxReport may open a preview window. But it will cause problem in some unexpected situation due to the DatasetList found in the following procedure in unit frxClass:
    function frxFindDataSet(DataSet: TfrxDataSet; const Name: String;
      Owner: TComponent): TfrxDataSet;
    var
      i: Integer;
      ds: TfrxDataSet;
    begin
      Result := DataSet;
      if Name = '' then
      begin
        Result := nil;
        Exit;
      end;
      if Owner = nil then Exit;
      DatasetList.Lock;
      for i := 0 to DatasetList.Count - 1 do
      begin
        ds := DatasetList[i];
        if AnsiCompareText(ds.UserName, Name) = 0 then
          if not ((Owner is TfrxReport) and (ds.Owner is TfrxReport) and
            (ds.Owner <> Owner)) then
          begin
            Result := DatasetList[i];
            break;
          end;
      end;
      DatasetList.Unlock;
    end;
    

    If we have multi instance of TfrxReport but those DataSet store in DataSetList has same UserName, the report output won't get display correctly. I am not sure you able to figure out what's wrong with this singleton design. If you don't, I will provide an example to illustrate this.

Leave a Comment