frxDesigner.Restrictions

отредактировано 03:51 Раздел: FastReport 3.0
В FR2.XX я писал в коде так
DesignerRestrictions:=[frdrDontDeletePage, frdrDontCreatePage, frdrDontEditPage, frdrDontCreateReport, frdrDontLoadReport,
 frdrDontSaveReport, frdrDontPreviewReport, frdrDontEditVariables, frdrDontChangeReportOptions];

чтобы запретить соответствующие действия пользователю. Все работало.

В FR3.XX разработчики добавили свойства frxDesigner.Restrictions, но что-то у меня в 3.18 они не работают. Т.е. в True их выставить можно, но они ничего не запрещают. Почему?

Комментарии

  • отредактировано 03:51
    А действительно, почему - только что проверил у себя, работает.
  • отредактировано 03:51
    У меня в 3.18 почему-то соотносит frxDesigner.Restrictions с тем дизайнером, который я вызываю из Делфи, а не с тем, что из приложения. Ужас...
  • отредактировано 03:51
    Слушайте, поставил FR3.20 - та же самая фигня.
    А именно:
    Ставлю на форму frxReport и frxDesigner, устанавливаю frxDesigner.DesignerRestrictions все True, в итоге эти настройки (Взять хотя бы drDontSaveReport или drDontInsertObject) действуют только на дизайнер, вызываемый из Delphi при щелчке на компоненте (Чего не должно вообще быть!!!), а на дизайнере, вызываемом из скомпилированного приложения это никак не отражается!!!
    У кого-нибудь еще так происходит?
    И что попробовать изменить, что бы этого не было?
    Может все дело в каких-нибудь переменных? Например я слышал, что в FR3.18 был глюк с одновременным использованием каких-то переменных FR и EhLib.
    Конечно frxDesigner.DesignerRestrictions не такое уж жизненно необходимое свойство но все таки и оно иногда нужно... ;)
  • отредактировано 03:51
    написал:
    У кого-нибудь еще так происходит?
    Было нечто похожее. Некоторое время назад задавал вопрос: http://www.fast-report.com/en/forum/?p=/discussion/2685 , ответа не получил. Ну да ладно. Сделал так:

    Описал класс:
    TfrxDesignerNew = class(TfrxDesignerForm)
    protected
      procedure DoCreate; override;
    end;
    
    procedure TfrxDesignerNew.DoCreate;
    begin
      boolean((@IsPreviewDesigner)^):=false;
      inherited;
    end;
    
    А в OnCreate главной формы добавил строку:
    frxDesignerClass:=TfrxDesignerNew;
    




  • отредактировано March 2006
    написал:
    Было нечто похожее. Некоторое время назад задавал вопрос
    Уф, а я уже думал что один с ума схожу ;)
    Да, предложенный код работает, спасибо.
    И вопрос к разработчикам, поднятый по адресу:
    насчет перехода между вкладками кода и редактируемой страницы в дизайнере, вызываемом из приложения, также обоснован.

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

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