Главная » Уроки по ООП » Урок 20. Невизуальные компоненты

Урок 20. Невизуальные компоненты

Невизуальные компоненты представляют собой, как прави­ло, компоненты, с помощью которых осуществляется доступ к системным ресурсам. Они отображаются только во время конст­руирования интерфейса, но не видны во время работы приложе­ния. Примером таких компонентов служит компонент Timer. Кро­ме него к невизуальным компонентам относят диалоговые ком­поненты и компоненты-меню.

Диалоговые компоненты

В Win32 диалоговым окном называется окно стандартного размера без кнопок максимизации и минимизации. Диалого­вые окна позволяют управлять различными режимами работы программы и сообщать ей необходимую информацию. Диалого­вое окно может пересылать сообщения, задавать вопросы и принимать ответы.
Выделяют два вида диалоговых окон — модальные и немо­дальные. Модальные диалоговые окна сохраняют фокус ввода до закрытия окна. Немодальные диалоговые окна позволяют переключаться в другие окна без закрытия данного окна.
Диалоговые компоненты расположены в па­нели компонентов на странице Dialogs.

Основные правила использования диалоговых панелей

Работа со стандартными диалоговыми окнами осуществляет­ся в три этапа.
1 этап: на форму помещается соответствующий компонент и осуществляется настройка его свойств.
2 этап: осуществляется вызов стандартного для диалоговых компонентов метода Execute, который отображает соответствующее диалоговое окно. Вызов этого метода обычно располагается внутри обработчика какого-либо события.
На­пример, мы хотим, чтобы при нажатии на кнопку на экране появилось диалоговое окно со­хранения файла. Для этого в обработчик события нажатия кнопки необходимо внести следующий оператор:

If SaveDialog1.Execute Then ...

Только после обращения к методу Execute на экране появляется соответствующее диалого­вое окно. Стандартное окно диалога является модальным окном, поэтому сразу после обращения к Execute дальнейшее выполне­ние программы приостанавливается до тех пор, пока пользова­тель не закроет окно.
Метод Execute является логической функцией, которая воз­вращает значение True, если результат диалога с пользователем был успешным. Проанализировав результат выполнения метода Execute, программа может выполнить третий этап.
3 этап: использо­вание введенных с помощью диалогового окна данных — имени файла, настроек принтера, выбранного шрифта и т. д.

Задание 1. Создайте приложение, которое использует компонент ColorDialog для изменения цвета формы.
Ход работы.
Поместите на форму компоненты ColorDialog и Button (из­мените значения свойства Caption на «Изменить цвет). Для кнопки создайте обработчик события onclick и внесите в него следующий код:

Запустите программу и нажмите на кнопку. На экране появится окно

Аналогичным образом используются другие стандартные диа­логовые компоненты.

 

Компоненты OpenDialog и SaveDialog

Компонент OpenDialog позволяет выбрать открываемый файл по заданному шаблону.
Компонент SaveDialog используется для выбора имени фай­ла, в котором будет сохраняться информация.
Свойства компонентов:


FileName

содержит маршрут поиска и выбранный файл при успешном завершении диалога.

DefaultExt

определяет расширение файла по умолчанию: если при задании имени файла пользователь не указал расширение, то к имени файла будет добавлена разделительная точка и значение этого свойства.

Filter

используется для выбора файлов, отображаемых в диалоговом окне. Для определения фильтра можно воспользоваться редактором свойства. Свойство можно устанавливать с помощью специального редактора или программно:
OpenDialog1.Filter: ='Текстовые файлы|*.txt| Файлы Паскаля|*.pas;*.dpr|;
Символы «|» служат для разделения фильтров друг от друга, а также для разделения описания фильтруемых файлов от соответствующей маски выбора.

FilterIndex

указывает, какой из заданных шаблонов отображается в списке. По умолчанию значение этого свойства равно 1;

InitialDir

задает название каталога, содержимое которого будет отображаться при вызове диалогового окна. Если значение этого свойства не задано, то отображается содержимое текущего каталога;

Title

задает текст заголовка диалогового окна;

Компонент FontDialog

Компонент FontDialog используется для вызова стандартно­го диалогового окна выбора шрифтов и их характеристик.
Свойства:
Device позволяет указать тип устройства, для которого выбираются шрифты:
fdScreen — экран.
fdPrinter — принтер.
fdBoth — шрифты, поддерживаемые и экраном, и принтером.
MinFontSize, MaxFontSize - этими свойствами определяется диапазон возможных значений размеров шрифтов. Значения этих свойств задаются в пунктах (1 пункт равен 1/72 дюйма, что приблизительно равно 0.36 мм). Если свойства содержат 0, то ограничения на размер шрифта отсутствуют.
Font содержит результат выбора шрифта.
Для того чтобы изменить шрифт компонента на значение, установленное в диалоговом окне, необходимо определить обра­ботчик сообщения OnApply компонента FontDialog.

Компонент ColorDialog

Компонент ColorDialog используется для вызова диалогового окна настройки цветов.
Color содержит выбранный цвет.
CustomColors содержит до 16 цветов, определенных пользователем. Каждая строка имеет такой формат: ColorX=HHHHHH, где X — буква от А до Р, определяющая номер цвета, НННННН — шестнадцатеричное представление цвета в формате RGB.
Options задает значения опций, определяющих настройку окна:


Значение

Описание (при установленном значении True)

cdFullOpen

показывать с развернутым окном выбора цвета пользователя

cdPreventFullOpen

запретить показ окна выбора цвета пользователем

cdShowHelp

включить в окно кнопку Справка

cdSolidColor

выбирать ближайший сплошной цвет

cdAnyColor

разрешить выбор несплошных цветов

Задание 2. Измените в программе из задания 1 свойства компонента ColorDialog1 так, чтобы на экран выводилось диалоговое окно в следующем виде:

Компоненты FindDialog и ReplaceDialog

Компонент FindDialog используется для отображения стан­дартного диалогового окна, предназначенного для ввода иско­мой информации.
Компоненты имеют следующие основные свойства:


FindText

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

ReplaceText

Только в компоненте ReplaceDialog — текст, который должен заменять FindText

Сами по себе компоненты FindDialog и ReplaceDialog не осуществляют ни поиска, ни замены. Они только обеспечивают интерфейс с пользователем. А поиск и замену надо осуществлять программно. Для этого можно пользоваться событием OnFind, происходящим, когда пользователь нажал в диалоге кнопку Найти далее, и событием OnReplace, возникающим, если пользователь нажал кнопку Заменить или Заменить все. В событии OnReplace узнать, какую именно кнопку нажал пользователь, можно по значениям флагов frReplace и frReplaceAll.

 

Задание 3: Организовать поиск текста в компоненте RichEdit.
Ход решения:
Установите компонент Memo1 и кнопку «Поиск».
Создайте следующий обработчик события нажатия кнопки «Поиск» и объявите глобальную переменную SPos.

Создайте обработчик события onFind для компонента FindDialog.

Запустите программу. Введите несколько строчек текста (так, чтобы встречались одинаковые слова). Затем выделите одно из повторяющихся слов и нажмите кнопку Поиск.
Пояснение кода программы:
Поиск заданного фрагмента легко проводить, пользуясь функцией Object Pascal Pos, которая определена в модуле System следующим образом:
function Pos(Substr: string; S: string): Byte;
где S — строка, в которой ищется фрагмент текста, a Substr — искомый фрагмент. Функция возвращает позицию первого символа первого вхождения искомого фрагмента в строку. Если Substr в S не найден, возвращается 0.
Для организации поиска нам потребуется еще две функции: Сору и AnsiLowerCase. Первая из них определена как:
function Copy(S: string; Index, Count: Integer): string;
Она возвращает фрагмент строки S, начинающийся с позиции Index и содержащий число символов, не превышающее Count. Функция AnsiLowerCase, определенная как
function AnsiLowerCase(const S: string): string;
возвращает строку символов S, переведенную в нижний регистр.
В программе вводится переменная SPos, сохраняющая позицию, начиная с которой надо проводить поиск.
Процедура MFindClick вызывает диалог, процедура FindDialog1Find обеспечивает поиск с учетом или без учета регистра в зависимости от флага frMatchCase. После нахождения очередного вхождения искомого текста этот текст выделяется в окне Memo1 и управление передается этому окну редактирования. Затем при нажатии пользователем в диалоговом окне кнопки Найти далее, поиск продолжается в оставшейся части текста. Если искомый текст не найден, делается запрос пользователю о продолжении диалога. Если пользователь не ответил на этот запрос положительно, то диалог закрывается методом CloseDialog.

Компонент OpenPictureDialog

Компонент OpenPictureDialog является потомком класса TOpenDialog и предназначен для выбора графических изображе­ний с возможностью их просмотра. Компонент OpenPictureDialog поддерживает графические изображения в следующих форматах (BMP, ICO, WMF, EMF).

Компонент SavePictureDialog

Компонент SavePictureDialog является «потомком» класса TSaveDialog и предназначен для сохранения графических изоб­ражений с возможностью их предварительного просмотра в од­ном из форматов, поддерживаемых классом TPicture.

 

 

Составитель: Салий Н.А.

Яндекс.Метрика
Сайт создан в системе uCoz