Висяк при экспорте в Excel

отредактировано 01:46 Раздел: FastReport 3.0
FR3.07, Delphi2005(Trial), Excel 2003, Windows 2003. При выполнении экспорта в Excel (XML) c автоматическим открытием Excel-файла после экспорта всё экспортится нормально, Excel открывается - но приложение виснет наглухо. У окна предпросмотра заголовок неактивный (серый), ни на чем не кликается, только снимается таскманагером. В Delphi7 такого не было. Проявляется на самых разных отчетах, и нерегулярно (на одном и том же отчете может три раза нормально отработать, а на четвертый раз повиснуть).

Комментарии

  • отредактировано 01:46
    ну так это и понятно.

    запусти под 2000 - такого не должно быть..

    ИМНО рано еще переходить на следующую платформу глюкавая она.
  • отредактировано 01:46
    Konst написал:
    ИМНО рано еще переходить на следующую платформу глюкавая она.
    "дети Билли не любили, дети Билли часто били" ;)
    Закомментил в трех местах в TfrxPreviewPages.Export Report.InternalOnProgress,Report.InternalOnProgressStart, Report.InternalOnProgressStop и всё заработало. Кстати, аналогичная хрень у меня была при портировании FR253 под D2005 ;)
    А разбираться, почему под D7 эдак, а под D2005 так - лень. Ну не будет окошка с прогрессом, и фиг с ним - разработчики потом пофиксят ;) ))))))
  • отредактировано 01:46
    vkozlov написал:
    А разбираться, почему под D7 эдак, а под D2005 так - лень.
    Нет, я таки человек очень нудный и противный. Посмотрел в код frxProgress.pas:

    procedure TfrxProgress.FormCreate(Sender: TObject);
    begin
    ...
    FActiveForm := Screen.ActiveForm;
    if FActiveForm <> nil then FActiveForm.Enabled := False;
    ...
    end;

    procedure TfrxProgress.FormHide(Sender: TObject);
    begin
    if FActiveForm <> nil then FActiveForm.Enabled := True;
    end;


    Смотрим в исходники VCL 2005:

    procedure TCustomForm.DoHide;
    begin
    if Assigned(FOnHide) then FOnHide(Self);
    end;

    Этот самый DoHide присутствует только в TCustomForm.CMShowingChanged; и финальный аккорд от дядьки Борланда:

    procedure TCustomForm.BeforeDestruction;
    begin
    GlobalNameSpace.BeginWrite;
    Destroying;
    Screen.FSaveFocusedList.Remove(Self);
    RemoveFixupReferences(Self, '');
    if FOleForm <> nil then FOleForm.OnDestroy;
    if FormStyle <> fsMDIChild then Hide;
    if not OldCreateOrder then DoDestroy;
    end;

    Сдублировал код TfrxProgress.FormHide в TfrxProgress.FormDestroy - заработало...

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.