Дизайнер отчетов изобилует большим количеством функциональных возможностей, которые многие пользователи не используют. Иногда многообразие иконок и меню только отвлекает. Поэтому многие пользователи хотели бы иметь упрощенную версию дизайнера отчетов с только необходимыми им функциями. Такой, кастомизированный дизайнер отчетов можно предоставлять конечным пользователям, встраивая его в свое приложение.
В этой статье мы рассмотрим, как создать пользовательские элементы управления дизайнером ответов, то есть пользовательскую панель инструментов с нужными функциональными кнопками. Сделать это достаточно просто. Дело в том, что компонент дизайнера отчетов предоставляет нам своего рода API, для вызова некоторых его функций, таких как: создание, загрузка и сохранение отчета, печать, просмотр отчета и многие другие.
Поэтому, все что нам нужно – добавить компонент дизайнера отчетов и создать собственную панель инструментов.
Добавим на форму компонент ToolStrip. И создадим на панели 7 кнопок:
Подключаем библиотеку FastReport.dll к проекту. И для формы создаем обработчик события Load:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
public DesignerControl designer; //Объявляем переменную для компонента дизайнер отчетов private void Form1_Load(object sender, EventArgs e) { designer = new DesignerControl(); //Создаем экземпляр дизайнера отчетов this.Controls.Add(designer); //Добавляем компонент на форму Report report = new Report(); //Создаем объект отчета designer.Report = report; //Передаем созданный пустой отчет в дизайнер отчетов designer.RefreshLayout(); //Обновляем дизайнер designer.Dock = DockStyle.Fill; //Задаем размещение компонента дизайнера designer.ShowMainMenu = false; //Отключаем меню в дизайнере } //Кнопка создания нового отчета private void ToolStripButton1_Click(object sender, EventArgs e) { designer.cmdNew.Invoke(); } //Кнопка открытия отчета private void OpenBtn_Click(object sender, EventArgs e) { designer.cmdOpen.Invoke(); } //Кнопка сохранения отчета private void SaveBtn_Click(object sender, EventArgs e) { designer.cmdSave.Invoke(); } //Кнопка просмотра отчета private void PreviewBtn_Click(object sender, EventArgs e) { designer.cmdPreview.Invoke(); } //Кнопка завершения программы private void CloseBtn_Click(object sender, EventArgs e) { this.Dispose(); } //Кнопка отмены последнего изменения private void UndoBtn_Click(object sender, EventArgs e) { designer.cmdUndo.Invoke(); } //Кнопка возврата последнего изменения private void RedoBtn_Click(object sender, EventArgs e) { designer.cmdRedo.Invoke(); } |
Как вы заметили, для каждой кнопки из созданной панели инструментов мы создали событие клика. В соответствии с назначением кнопок, мы вызываем нужную команду дизайнера.
Список доступных команд:
А теперь запустим наше приложение:
На первый взгляд обычный дизайнер отчетов. Но обратите внимание на верхнюю панель инструментов – она не стандартная. На нее мы вынесли только нужные нам функции.