7. развитые средства диалогового интерфейса7.1. Диалоги Можно с уверенностью сказать, что к настоящему моменту большинство элементов диалогового интерфейса для приложений, работающих в операционных системах с графической оболочкой, унифицировано. Одним из таких унифицированных средств, очень облегчающим работу пользователя с системой, является диалоговое окно или кратко - диалог. Стандартные диалоговые окна используются для таких часто выполняемых действий как выбор файлов, шрифтов или цветов, поиск текста, печать документа на принтере. В Delphi для реализации диалогов предназначена палитра компонентов Dialogs. Компоненты этой палитры позволяют реализовать следующие стандартные диалоги Windows. OpenDialog – выбор имени открываемого файла. SaveDialog – выбор имени сохраняемого файла. OpenPictureDialog – открытие графического файла. SavePictureDialog - -//-//-//-//-//-//-//-; FontDialog – настройка параметров шрифта; ColorDialog – выбор цвета; PrintDialog – вывод на печать; PrinterSetupDialog – настройка принтера; FindDialog – поиск файла; ReplaceDialog – поиск с заменой. Активизация диалога. При размещении компонента, реализующего один из перечисленных диалогов, на форме он отображается в виде небольшой пиктограммы. Но для активизации диалога во время работы приложения этого мало. В отличие от многих других визуальных компонентов, диалоги автоматически при запуске приложения на выполнение не появляются на экране. Для этого их нужно активизировать программным путем с помощью метода Execute, который является общим для всех диалогов палитры Dialogs. Этот метод является функцией и возвращает значение типа Boolean: True – если диалог завершен успешно (например, нажатием кнопки Оk, Открыть или Сохранить), и False – в противном случае, т.е., если диалог отменен. Активизация диалога может быть выполнена нажатием соответствующей командной кнопки или другим способом. Для этого в обработчике соответствующего события должен быть записан оператор следующего вида: If OpenDialog1.Execute Then {действие при положительном завершении} Else {действие при отмене диалога}; 7.1.1. Работа с произвольными файлами. Для выполнения операции выбора имени открываемого или сохраняемого произвольного файла в Delphi используются два компонента – OpenDialog и SaveDialog.
Компонент SaveDialog отличается от OpenDialog только заголовком окна и предназначен для реализации процедуры выбора имени сохраняемого файла. Основными свойствами компонентов OpenDialog и SaveDialog являются: FileName – свойство типа String, содержит полное имя выбранного в диалоге файла; Это значение, как правило, определяется в ходе выполнения программы в процессе самого диалога. Вместе с тем программист имеет возможность задать имя открываемого файла, которое предлагается по умолчанию сразу после активизации диалога. Для этого необходимо в процессе визуального конструирования приложения выполнить следующие действия: щелкнуть мышкой в поле значения свойства FileName по значку , после чего на экране появится окно такого же вида, что и на рис. 7.1.; в этом окне нужно щелкнуть мышкой на том файле, имя которого мы хотим задать по умолчанию, и далее окно автоматически закроется. Title – свойство типа String, содержит заголовок окна; если значение этого свойства явно не установлено, то по умолчанию окну присваивается заголовок Открыть (для компонента OpenDialog) или Сохранить (для компонента SaveDialog); InitialDir – свойство типа String, определяет каталог, содержание которого отображается при активизации окна диалога. По умолчанию содержит текущий директорий; может быть сформировано как на этапе визуального конструирования приложения, так и в процессе его выполнения (программным путем). В последнем случае нужно воспользоваться оператором следующего вида: OpenDialog1.InitialDir:=’C:Delphi7Source’; DefaultExt – свойство типа String, задает тип расширения имени файла, который задается по умолчанию (если он не задан в явном виде); Filter – это массив типа String; каждый элемент массива содержит шаблон (маску) имен файлов, который отображается в поле «Тип файла». Это свойство определяет файлы, которые будут отображаться в рабочем поле окна диалога. По умолчанию задается пустая строка (эквивалентно *.* - все файлы). Значения массива можно формировать в Инспекторе объектов и программным путем. В первом случае фильтр формируются по щелчку на значке в поле значения свойства, после чего на экране появляется окно вида:
которое представляет собой редактор фильтра. В левой колонке вводится имя шаблона, которое будет отображаться в поле «Тип файла» (например, «текстовые файлы»); в правой колонке вводится сам шаблон (фильтр) групповое имя (например, *.*). Таких строк может быть несколько. Для формирования фильтра программным путем можно использовать оператор следующего вида: OpenDialog1.Filter:=’Все файлы|*.*|Ехе-фалы|*.exe’; Этот оператор эквивалентен формированию двух строк в редакторе фильтра. Какая из масок будет использоваться во время выполнения приложения, задается следующим свойством. FilterIndex - свойство типа integer, указывает, какой по порядку элемент фильтра выбран в данный момент. По умолчанию задается 1-й элемент списка. Options – это комплексное свойство, которое содержит более двух десятков подсвойств типа Boolean, предназначенных для установки параметров внешнего вида диалога и его функциональных возможностей. Приведем описание некоторых из них. ofNoChangeDir – запрещает смену каталога; ofShowHelp – включает в окно кнопку Help; ofAllowMultiSelect – разрешает выбирать из списка более одного файла; ofFileMustExist – разрешает выбор только существующих файлов; ofCreatePrompt – при вводе имени несуществующего файла выдается запрос на создание файла. Пример использования диалога OpenDialog. Разработаем приложение, которое загружает в поле Memo текстовый файл. Текст обработчика события приведен ниже. При нажатии кнопки Открыть активизируется окно диалога открытия файла. Выбранный в процессе диалога файл будет загружен в поле Memo1. При этом нужно учесть, что в Memo корректно отображаются только тексты в кодировке ANSI. Результат работы программы выглядит следующим образом:
Для выбора имени открываемого и сохраняемого графического файла в Delphi используются компоненты OpenPictureDialog и SavePictureDialog. Эти компоненты отличаются от предыдущих двумя факторами: 1) в окне диалога справа от списка имен файлов помещено окно для предварительного просмотра рисунка; 2) свойство Filter по умолчанию установлено для отображения графических файлов следующих форматов: *.jpg, *.jpeg, *.bmp, *.ico, *.emf, *.wmf . Кроме того, на этапе выполнения значение свойства Filter можно установить с помощью специальной функции GraphicFilter, обращение к которой имеет следующий вид: OpenPictureDialog1.Filter:=GraphicFilter(GraphicClass:TGraphicClass):string; Здесь параметр GraphicClass может принимать одно из следующих значений: TBitmap – файлы с расширением *.bmp; TIcon – файлы с расширением *.ico; TMetafile – файлы с расширением *.emf, *.wmf; TJPEGImage – файлы с расширением *.jpg, *.jpeg; TGraphic – все перечисленные выше файлы. Пример обращения: OpenPictureDialog1.Filter:=GraphicFilter(TBitmap); Все остальные примы работы с графическими диалогами такие же как и с диалогами OpenDialog и SaveDialog. 7.1.3. Выбор параметров шрифта.
К основным свойствам компонента FontDialog относятся следующие: Font – комплексное свойство типа TFont, определяющее параметры шрифта (подсвойства Syile, Size, Color и др.); доступно как на этапе визуального программирования так и в процессе выполнения программы; MinFontSize, MaxFontSize – свойства типа Integer, которые задают диапазон возможных значений размера шрифта. Значения этих свойств задаются в пунктах (1 пункт равен около 0,36 см.). Если значения свойств установлены в 0, то ограничение на размер шрифта отсутствует. Device – свойство типа TFontDialogDevice, которое задает тип устройства, для которого устанавливается шрифт, и может принимать следующие значения: fdScreen – задает вывод на экран; fdPrinter – задает вывод на принтер; fdBoth – задает вывод на экран и принтер.
и используется для настройки определенных параметров диалога. Наиболее важными подсвойствами являются следующие: fdEffects – включает в окно диалога переключатели Подчеркнутый и Зачеркнутый и список выбора цвета шрифта; fdLimitSize – активизация свойств MinFontSize, MaxFontSize, устанавливающая режим ограничения на размер шрифта; fdTrueTypeOnly - устанавливает отображение в списке только шрифтов TrueType; fdWysiwyg – устанавливает отображение в списке шрифтов, доступных одновременно и для экрана и для принтера.
По умолчанию в значение True установлено только подсвойство fdEffects. Пример. Установка параметров шрифта сообщений, которые будут выводиться в поле вывода Label1: If FontDialog1.Execute Then Label1.Font:= FontDialog1.Font; 7.1.4. Выбор цвета.
Основными свойствами компонента ColorDialog являются следующие: Color – свойство типа Tcolor задает значение цвета заливки, которое в процессе выполнения программы можно использовать применительно к различным визуальным компонентам. Options - свойство типа TcolorDialogOptions используется для настройки определенных режимов работы диалога ColorDialog и содержит пять подсвойств типа Boolean:
cdPreventFullOpen – свойство, позволяющее отключить кнопку Определить цвет>> (игнорируется при включенном свойстве cdFullOpen); cdShowHelp – задает отображение кнопки Help/Справка; cdSolidColor – определяет выбор вместо выбранного ближайшего сплошного цвета; cdAnyColor – определяет выбор несплошных цветов. По умолчанию все подсвойства выключены. Пример применения диалога ColorDialog: If ColorDialog1.Execute Then Label1.Color:= ColorDialog1.Color; 7.1.5. Диалоги поиска и замены строк. Сразу отметим, что указанные диалоги не предназначены непосредственно для поиска и замены строк, а лишь для ввода в режиме диалога строк, подлежащих поиску и замене. Собственно действия по поиску и замене строк в тексте программируются дополнительно программистом в соответствующем обработчике событий.
Основными свойствами компонента FindDialog являются следующие: FindText - свойство типа String содержит строку, введенную в ходе диалога в поле «Что»; Options – комплексное свойство типа TFindOptions содержит более десяти подсвойств типа Boolean, которые используются для настройки определенных параметров диалога.
Введенные в поля Что и Чем строки запоминаются в свойствах FindText и ReplaceText, соответственно. 7.1.6. Диалоги работы с принтером. Для реализации интерфейса взаимодействия с принтером в Delphi используются два компонента палитры Dialogs – PrintDialog и PrinterSetupDialog . 7.2. Индикаторы. Под индикатором будем понимать средство визуального динамического отображения выполнения какого-либо процесса (копирование больших файлов, форматирование диска и т.п.). В Delphi для этой цели используются несколько компонентов. На примере наиболее характерных индикаторов рассмотрим технику работы с ними. Компонент ProgressBar , расположенный в палитре Win32, и компонент Gauge из палитры Samples. Компонент ProgressBar является наиболее часто применяемым и удобным индикатором процесса в системе Windows. Он в палитре Win32. Этот индикатор, к примеру, используется практически во всех программах инсталляции программных продуктов. Визуально он представляет собой вертикальную или горизонтальную прямоугольную полоску, заполняемую по ходу выполнения процесса:
Position – свойство типа integer, определяет степень выполнения отображаемого процесса (заполненную часть индикатора); Min – свойство типа integer, задает минимальное (стартовое) числовое значение свойства Position (по умолчанию равно 0); Max – свойство типа integer, задает максимальное (конечное) числовое значение свойства Position (по умолчанию равно 100); Orientation – ориентация расположения индикатора, может принимать одно из двух предопределенных значений: pbHorizontal (горизонтальное положение) и pbVertical (вертикальное положение); Step - свойство типа integer, задает величину шага, на которую изменяется значение Position при обращении к процедуре StepIt; по умолчанию равно 10. Управление процессом изменения состояния индикатора осуществляется во время выполнения приложения. Для этой цели используется либо непосредственное управление значением свойства Position с помощью, к примеру, оператора присваивания: ProgressBar1.Position:=ProgressBar1.Position+20; либо две стандартные процедуры – StepBy и StepIt. Процедура StepBy изменяет значение свойства Position на величину Delta типа Integer, которая используется в качестве аргумента. Формат обращения к процедуре -StepBy(Delta); Например: Var Delta:integer; . . . Delta:=20; . . . ProgressBar1.StepBy(Delta); или: ProgressBar1.StepBy(20); Процедура StepIt изменяет значение свойства Position на величину Step. Эта процедура используется без аргументов: StepIt; Компонент Gauge является многозначным компонентом (имеющим различное визуальное представление в зависимости от конкретных значений его свойств) и позволяет отображать ход выполнения некоторого процесса в одном из следующих видов: 1) вертикально заполняемый прямоугольник; 2) горизонтально заполняемый прямоугольник; 3) спидометр со стрелкой; 4) круговая диаграмма; 5) прямоугольник, внутри которого в текстовом виде отображается числовое значения части выполненного процесса в процентах. Конкретный вид индикатора определяется свойством Kind, которое может принимать одно из следующих значений, выбираемых из выпадающего списка в Инспекторе объектов: gkHorizontalBar – горизонтально заполняемый прямоугольник; gkVerticalBar – вертикально заполняемый прямоугольник; grNeedle – спидометр со стрелкой; gkPie – круговая диаграмма; gkText – прямоугольник с изменяющимся текстовым значением части выполненного процесса в процентах. Вид каждого из индикаторов в соответствии со значениями свойства Kind представлен на следующем рисунке:
К основным свойствам компонента Gauge, кроме вышерассмотренного Kind, отнесем следующие: Progress – свойство типа integer, определяющее степень выполнения отображаемого процесса (аналог свойства Position индикатора ProgressBar); MinValue – свойство типа integer, задает минимальное (стартовое) числовое значение свойства Progress (по умолчанию равно 0); MaxValue – свойство типа integer, задает максимальное (конечное) числовое значение свойства Progress (по умолчанию равно 100); ForeColor – свойство типа TColor, принимающее значение из предопределенного списка именованных констант (clRed, clGreen и т.д., по умолчанию - clBlack). Управление процессом изменения состояния индикатора осуществляется во время выполнения приложения путем непосредственного управления значением свойства Progress с помощью, к примеру, оператора присваивания: Gauge1.Progress:= Gauge1.Progress+15;
Отметим, что значением регулятора можно управлять также и программным путем, как в компонентах ProgressBar и Gauge. К основным свойствам компонента относятся: Position – свойство типа Integer, определяет текущее положение регулятора; доступно в Инспекторе объектов и на этапе выполнения программы; Min – свойство типа Integer, задает минимальное значение диапазона изменения регулируемой величины; Max – свойство типа Integer, задает максимальное значение диапазона изменения регулируемой величины; Orientation – свойство, определяющее ориентацию расположения компонента на форме, принимает значение из списка предопределенных именованных констант: - trHorizontal – горизонтальное расположение; - trVertical - вертикальное расположение; Frequency - свойство типа Integer, определяет частоту нанесения меток на шкале индикатора: 1 – каждое значение регулируемой величины имеет свою метку, 2 – каждое второе значение регулируемой величины имеет свою метку и т.д. Для реакции программы на изменение положения регулятора пользователем можно воспользоваться обработчиком события OnChange. В качестве примера рассмотрим программу, которая при каждом изменении положения регулятора TrackBar устанавливает в такое же положение индикатор ProgressBar: procedure TForm1.TrackBar1Change(Sender: TObject); begin ProgressBar1.Position:=TrackBar1.Position; end; Аналогичные функции выполняет также регулятор ScrollBar из палитры Standard. |
| Оглавление| |