Вопросы по дезайнеру и превью
1. Как проще всего добраться до меню дезайнера?
Пока ничего умнее чем:
2. У PreviewControl события Shown нет, и непонятно как добраться в runtime до кнопок тулбара (например, спрятать некоторые кнопоки или переопределить обработчик события Click). Как вариант, может сделать так:
preview.Buttons["Open"].Visible = false;
и
preview.Buttons["Open"].Click += new EventHandler(button_Click);
3. Класс EnvironmentSettings творит чудеса, если создать два эеземпляра:
Как вариант может:
p.s. Пока вроде все, если я где неправ (полохо маны читал ), заранее извиняюсь....
p.s.s. Работаю под VS2005, FastReport 1.0.132 (beta)
Пока ничего умнее чем:
...
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)
Комментарии
http://fast-report.com/ru/forum/index.php?...ost&p=22557
Непонятно, зачем Вы в обработчике designer.Shown скрываете меню. Можно было это сделать сразу при создании объекта дизайнера.
По ссылке выше также про тулбар есть.
1) именно так. В будущих релизах могу добавить св-во Menu в дизайнер.
2) такого события пока нет. Вы можете сделать свое окно просмотра. Спрятать кнопки можно, используя EnvironmentSettings.
3) класс EnvironmentSettings является оберткой над глобальным объектом Config. Делать несколько экземпляров не имеет смысла.
а на счет Designer designer = new Designer(report);
DesignerMenu menu = dess.Plugins.Find("MainMenu") as DesignerMenu;
menu в этом случае равно null, его еще нет в этот момент см. ниже.
Такое свойство уже есть, от формы наследуется, на данный момент возвращает только null. Вобщем и так ничего, но до меню можно добраться только после запуска дезайнера. До запуска designer.Plugins.Find("MainMenu") as DesignerMenu вернет null (designer.Plugins.Count равно 0)..
программно это будет выглядеть примерно так (студия такое генерит если previewControl1 на форму кинуть и одну кнопку убрать) я так и подумал,.. Тогда можно-ли использовать события самого класса Designer ?