Вопросы по дезайнеру и превью

отредактировано 15:13 Раздел: FastReport .NET
1. Как проще всего добраться до меню дезайнера?
Пока ничего умнее чем:
...
Report report = new FastReport.Report();
Designer designer = new Designer(report);
designer.Shown += new EventHandler(designer_Shown);
designer.ShowDialog();
...

void designer_Shown(object sender, EventArgs e)
        {
            Designer designer = (Designer)sender;
            DesignerMenu menu = designer.Plugins.Find("MainMenu") as DesignerMenu;
            menu.Visible = false; //например
        }
не придумал :)

2. У PreviewControl события Shown нет, и непонятно как добраться в runtime до кнопок тулбара (например, спрятать некоторые кнопоки или переопределить обработчик события Click). Как вариант, может сделать так:
preview.Buttons["Open"].Visible = false;
и
preview.Buttons["Open"].Click += new EventHandler(button_Click);

3. Класс EnvironmentSettings творит чудеса, если создать два эеземпляра:
EnvironmentSettings environmentSettings = new EnvironmentSettings();
environmentSettings.CustomOpenDialog += new FastReport.Design.OpenSaveDialogEventHandler(environmentSettings_CustomOpenDialog);
environmentSettings.CustomOpenReport += new FastReport.Design.OpenSaveReportEventHandler(environmentSettings_CustomOpenReport);
environmentSettings.CustomSaveDialog += new FastReport.Design.OpenSaveDialogEventHandler(environmentSettings_CustomSaveDialog);
environmentSettings.CustomSaveReport += new FastReport.Design.OpenSaveReportEventHandler(environmentSettings_CustomSaveReport);
EnvironmentSettings environmentSettings2 = new EnvironmentSettings();
environmentSettings2.CustomOpenDialog += new FastReport.Design.OpenSaveDialogEventHandler(environmentSettings2_CustomOpenDialog);
environmentSettings2.CustomOpenReport += new FastReport.Design.OpenSaveReportEventHandler(environmentSettings2_CustomOpenReport);
environmentSettings2.CustomSaveDialog += new FastReport.Design.OpenSaveDialogEventHandler(environmentSettings2_CustomSaveDialog);
environmentSettings2.CustomSaveReport += new FastReport.Design.OpenSaveReportEventHandler(environmentSettings2_CustomSaveReport);
то дезайнер вызывает обработчики обоих. Как он вообще определяет, что EnvironmentSettings есть, я так и не понял.
Как вариант может:
FastReport.Design.DesignerSettings designerSettings = new FastReport.Design.DesignerSettings();
designerSettings.CustomOpenDialog +=...
...
FastReport.Design.Designer designer = new FastReport.Design.Designer(report, designerSettings);
//или designer.Settings = designerSettings;
и также может у PreviewControl...

p.s. Пока вроде все, если я где неправ (полохо маны читал :) ), заранее извиняюсь....
p.s.s. Работаю под VS2005, FastReport 1.0.132 (beta)

Комментарии

  • CouRageCouRage Санкт-Петербург
    отредактировано February 2009
    написал:
    1. Как проще всего добраться до меню дезайнера?
    Вот здесь было про меню:
    http://fast-report.com/ru/forum/index.php?...ost&p=22557

    Непонятно, зачем Вы в обработчике designer.Shown скрываете меню. Можно было это сделать сразу при создании объекта дизайнера.
    написал:
    2... непонятно как добраться в runtime до кнопок тулбара
    По ссылке выше также про тулбар есть.
  • отредактировано 15:13
    Здравствуйте,

    1) именно так. В будущих релизах могу добавить св-во Menu в дизайнер.
    2) такого события пока нет. Вы можете сделать свое окно просмотра. Спрятать кнопки можно, используя EnvironmentSettings.
    3) класс EnvironmentSettings является оберткой над глобальным объектом Config. Делать несколько экземпляров не имеет смысла.
  • отредактировано 15:13
    написал:
    Непонятно, зачем Вы в обработчике designer.Shown скрываете меню. Можно было это сделать сразу при создании объекта дизайнера.
    Скрываю просто для примера...
    а на счет
    написал:
    Можно было это сделать сразу при создании объекта дизайнера.
    Designer designer = new Designer(report);
    DesignerMenu menu = dess.Plugins.Find("MainMenu") as DesignerMenu;
    menu в этом случае равно null, его еще нет в этот момент см. ниже.
    написал:
    1) именно так. В будущих релизах могу добавить св-во Menu в дизайнер.
    Такое свойство уже есть, от формы наследуется, на данный момент возвращает только null. Вобщем и так ничего, но до меню можно добраться только после запуска дезайнера. До запуска designer.Plugins.Find("MainMenu") as DesignerMenu вернет null (designer.Plugins.Count равно 0)..
    написал:
    Спрятать кнопки можно, используя EnvironmentSettings.

    программно это будет выглядеть примерно так :) (студия такое генерит если previewControl1 на форму кинуть и одну кнопку убрать)
    previewControl1.Buttons = ((FastReport.PreviewButtons)(((((((((((FastReport.PreviewButtons.Print | FastReport.PreviewButtons.Save)
                            | FastReport.PreviewButtons.Email)
                            | FastReport.PreviewButtons.Find)
                            | FastReport.PreviewButtons.Zoom)
                            | FastReport.PreviewButtons.Outline)
                            | FastReport.PreviewButtons.PageSetup)
                            | FastReport.PreviewButtons.Edit)
                            | FastReport.PreviewButtons.Watermark)
                            | FastReport.PreviewButtons.Navigator)
                            | FastReport.PreviewButtons.Close)));
    
    написал:
    3) класс EnvironmentSettings является ...
    я так и подумал,.. Тогда можно-ли использовать события самого класса Designer ?
  • отредактировано 15:13
    У дизайнера нет таких событий. В чем проблема при использовании EnvironmentSettings?
  • отредактировано February 2009
    Все, разобрался вроде. Во всем виноваты кривые руки...

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

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