Russian Belarusian English German Japanese Ukrainian
  • Главная
  • Создание и хранение шаблонов компонентов

2.85

В процессе разработки различных приложений нередко используются одинаковые компоненты, с одинаковыми настройками их свойств и одинаковыми обработчиками событий. Каждый раз повторять все эти настройки непроизводительная трата собственных сил и времени. C++Builder предоставляет широкие возможности повторного использования однажды разработанных кодов. Наиболее простой способ сохранения разработанных компонентов или групп компонентов для последующего их использования в других проектах - запоминание в библиотеке визуальных компонентов соответствующих шаблонов.

Пусть нужно на основе компонента Edit создать окно редактирования, в котором пользователь мог бы вводить только целые числа, т.е. не мог бы вводить никаких других символов, кроме цифр. Кроме того, при нажатии пользователем клавиши Enter фокус должен передаваться следующему компоненту в последовательности табуляции. Это можно сделать, например, следующим образом.

Откройте новое приложение и перенесите на форму компонент типа Edit. В обработчике его события OnKeyPress напишите оператор:

Set<char, '0', '9'> Dig;
if (! (Dig << '0' << '1' << '2' << '3' << '4' << '5' << '6' << '7' << '8' << '9').Contains(Key))
Key= 0;

а в обработчике события OnKeyDown оператор:

if (Key == VK_RETURN)
FindNextControl((TWinControl *)Sender, true, true, false)->SetFocus();

Эти операторы, заменяют все символы, кроме цифр (нулевым символом), который не будет отображаться в окне, и при нажатии Enter передадут фокус очередному компоненту.

Измените также текст в окне (свойство Text) на «0».

Пусть мы хотим сохранить шаблон этого компонента в библиотеке визуальных компонентов, чтобы в дальнейшем включать подобный компонент в другие свои приложения. Для этого надо, выделив предварительно данный компонент, выполнить команду Component|CreateComponentTemplate (создать шаблон компонента). В открывшемся диалоговом окне ComponentTemplateInformation можно задать имя компонента (в верхнем окне редактирования), которое будет появляться на ярлычке подсказки, если пользователь задержит курсор мыши над пиктограммой этого компонента в библиотеке визуальных компонентов.

В выпадающем списке в средней части окна можно выбрать страницу библиотеки визуальных компонентов, на которой нужно разместить пиктограмму компонента, можно также указать новое имя «Мои шаблоны» и тогда в библиотеке визуальных компонентов будет создана новая страница с этим именем. Можно также изменить пиктограмму данного компонента (кнопка Change). Пиктограмма должна быть подготовлена заранее в виде файла .bmp размером 24 на 24. После выполнения всех описанных операций щелкните на кнопке ОК.

Шаблон появится в библиотеке. Можно убедиться в этом, посмотрев на указанную при создании страницу библиотеки.

Теперь попробуйте создать новое приложение и перенести на форму созданный раннее компонент. Он появится на форме в том виде, в котором он был записан в библиотеку. Посмотрев на страницу событий этого компонента в Инспекторе Объектов, можно увидеть, что на ней указаны обработчики событий OnKeyDown и OnKeyPress, а в процедурах этих обработчиков уже записаны те операторы, которые были написаны перед созданием шаблона.

Правда, у такого подхода имеется определенный недостаток. Если разместить на форме несколько созданных компонентов, то для каждого из них в текст модуля включатся соответствующие обработчики событий. Это явная избыточность, поскольку написанные операторы обработки универсальны и хватило бы одного обработчика события OnKeyDown и одного обработчика события OnKeyPress на все размещенные компоненты. Чтобы избежать избыточности, желательно будет оставить в модуле по одному обработчику каждого вида, остальные удалить из текста, а во всех окнах редактирования сослаться на оставшиеся обработчики.

Таким образом, можно создать себе немало шаблонов компонентов, которые легко переносятся из приложения в приложение. Аналогичным образом можно создавать шаблоны не только отдельных компонентов, но и групп компонентов, расположенных, например, на панели. В этом случае следует сохранять шаблон всей панели, и он будет включать расположенные на ней компоненты. Впрочем, повторяющиеся панели компонентов лучше оформлять в виде фреймов и использовать сохранение их в Депозитарии. А вот меню вместе с соответствующей ему инструментальной панелью, диспетчером действий и списком изображений очень удобно сохранять в виде шаблона.

Можно потратить один раз время и сформировать некий универсальный шаблон различный типовых действий. Перенесите на форму компонент ActionList и создайте в нем список действий, встречающихся в различных ваших программах. Для каждого действия задайте тексты подсказок в свойствах Hint и назначьте, где надо, быстрые клавиши. Далее для этого списка действий следует подобрать в компоненте ImageList набор хороших пиктограмм для разделов меню и кнопок. Затем на основании этого списка в компонентах MainMenu и ToolBar с формируйте соответствующее меню и инструментальную панель. Можно также в создаваемый шаблон добавить компоненты StatusBar панель состояния и ApplicationEvents перехватчик событий приложения.

Для многих действий постоянно требуются компоненты диалогов. Их тоже полезно добавить в шаблон. Далее можно описать обработчики многих из введенных раннее действий. Там, где невозможно их полностью описать, можно создать некие заготовки обработчиков, которые будут легко заполнять в конкретных приложениях.

Завершив эту работу, выделите все компоненты, которые хотите включить в шаблон, выполните команду Component|CreateComponentTemplate и включите описанным выше способом ваш шаблон в библиотеку. В дальнейшем можно с поражающей всех быстротой создавать с помощью шаблона прототипы различных приложений, поскольку удалить из шаблона лишние действия намного быстрее, чем описывать все каждый раз. Но выигрыш будет не только в скорости разработки. Будет обеспечено единство стиля разработок. А это очень важно.

В дальнейшем можно развивать и пополнять созданный шаблон, перенося его со страницы библиотеки на форму, что-то в нем модернизируя и повторно занося измененный шаблон в библиотеку под тем же или иным именем. Если в дальнейшем перестанет нравиться созданный шаблон, то его можно удалить из библиотеки. Для этого надо выполнить команду Component|ConfigurePalette. При выполнении этой команды можно увидеть диалоговое окно страницы Polette опций среды C++Builder. В этом окне можно удалить (кнопка Delete) компонент или целую страницу, если она пустая, переименовать (кнопка Rename) компонент или страницу, добавить (кнопка Add), изменить последовательность размещения страниц библиотеки и компонентов.

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

  Комментарии

0 Anasa 29.06.2015 12:31 #1
Valuable info for Код:C++ beginers. Thanks!

Добавить комментарий


Поиск по сайту