8 Невизуальные компоненты Delphi
Невизуальные компоненты представляют собой, как правило, компоненты, с помощью которых осуществляется доступ к системным ресурсам. Они отображаются только во время конструирования интерфейса, но не видны во время работы приложения. Примером таких компонентов служит компонент Timer, который был использован при разработке игры «Жизнь». Кроме него к невизуальным компонентам относят диалоговые компоненты и компоненты-меню.
8.1. Диалоговые компоненты
В Win32 диалоговым окном называется окно стандартного размера без кнопок максимизации и минимизации. Диалоговые окна позволяют управлять различными режимами работы программы и сообщать ей необходимую информацию. Диалоговое окно может пересылать сообщения, задавать вопросы и принимать ответы.
Выделяют два вида диалоговых окон — модальные и немодальные. Модальные диалоговые окна сохраняют фокус ввода до закрытия окна. Немодальные диалоговые окна позволяют переключаться в другие окна без закрытия данного окна.
Компонент |
Диалоговая панель |
OpenDialog |
выбор открываемого файла по шаблону |
SaveDialog |
создание файла |
FontDialog |
выбор шрифта и его характеристик |
ColorDialog |
выбор цвета |
PrintDialog |
вывод на устройство печати |
PrinterSetupDialog |
панель настройки устройства печати |
FindDialog |
панель поиска |
ReplaceDialog |
панель замены |
OpenPictureDialog |
выбор графического изображения с просмотром |
SavePictureDialog |
сохранение графического изображения с просмотром |
Библиотека VCL Delphi содержит 10 компонентов, реализующих стандартные диалоговые панели, используемые многими Windows-приложениями. Эти компоненты расположены в панели компонентов на странице Dialogs. Компоненты и реализуемые ими стандартные диалоговые панели перечислены в таблице на предыдущей странице.
8.1.1. Основные правила использования диалоговых панелей
Работа со стандартными диалоговыми окнами осуществляется в три этапа.
Вначале на форму помещается соответствующий компонент и осуществляется настройка его свойств. Настройка свойств может проходить как на этапе конструирования, так и в ходе выполнения программы. Как и для любых других компонентов, программист не должен заботиться о вызове конструктора и деструктора диалогового окна — эти вызовы реализуются автоматически в момент старта и завершения программы.
На втором этапе осуществляется вызов стандартного для диалоговых компонентов метода Execute, который отображает соответствующее диалоговое окно. Вызов этого метода обычно располагается внутри обработчика какого-либо события. Например, для отображения стандартного диалогового окна сохранения файла в ответ на выбор пункта меню Файл/Сохранить может быть выполнен оператор:
If SaveDialogl. Execute Then ...
а обработчик нажатия кнопки Save может вызвать такой же метод у компонента TSaveDialog и т. д. Только после обращения к методу Execute на экране появляется соответствующее диалоговое окно. Стандартное окно диалога является модальным окном, поэтому сразу после обращения к Execute дальнейшее выполнение программы приостанавливается до тех пор, пока пользователь не закроет окно.
Метод Execute является логической функцией, которая возвращает значение True, если результат диалога с пользователем был успешным. Проанализировав результат выполнения метода Execute, программа может выполнить третий этап — использование введенных с помощью диалогового окна данных — имени файла, настроек принтера, выбранного шрифта и т. д.
Упражнение 8.1. Создайте приложение, которое использует компонент ColorDialog для изменения цвета формы.
Решение
Создайте каталог Dialogl, файл модуля сохраните в файле Main.pas, файл проекта — ChangeColor.dpr.
Поместите на форму компоненты ColorDialog и Button (измените значения свойства Caption на «Изменить цвет», Name — «ChangeBtn»).
Создайте обработчик события OnClick кнопки:
procedure TForml.ChangeBtnClick {Sender: TObject); begin
If ColorDialogl.Execute then
{отображение стандартного диалогового окна выбора цвета} Color:=ColorDialogl.Color;
{значение, возвращенное диалоговым окном, присваивается
свойству Color формы}
end;
Эксперимент. Сохраните файлы проекта. Запустите приложение. Убедитесь, что компонент ColorDialog работает как стандартное диалоговое окно выбора цвета. Определите значение, возвращаемое методом Execute при выборе кнопок ОК и Cancel.
Аналогичным образом используются другие стандартные диалоговые компоненты. Заметим, что для всех компонентов, кроме PrinterSetupDialog, метод Execute является функцией.
8.1.2. Компоненты OpenDialog и SaveDialog
Компонент OpenDialog позволяет выбрать открываемый файл по заданному шаблону.
Компонент SaveDialog используется для выбора имени файла, в котором будет сохраняться информация.
FileName содержит маршрут поиска и выбранный файл при успешном завершении диалога;
Default Ext определяет расширение файла по умолчанию: если при задании имени файла пользователь не указал расширение, то к имени файла будетсдобавлена разделительная точка и значение этого свойства;
Filter используется для выбора файлов, отображаемых
в диалоговом окне. Для определения фильтра можно воспользоваться редактором свойства. Свойство можно устанавливать с помощью специального редактора или программно:
OpenDialogl.Filter: ='Текстовые файлы| * . txt |Файлы Паскаля|*.pas;*.dpr1;
Символы « | » служат для разделения фильтров друг от друга, а также для разделения описания фильтруемых файлов от соответствующей маски выбора;
Filterlndex указывает, какой из заданных шаблонов отображается в списке. По умолчанию значение этого свойства равно 1;