Справочник по компонентам Дельфи

Автор: Пользователь скрыл имя, 06 Февраля 2013 в 01:52, аттестационная работа

Описание работы

Класс TList -- универсальный список. Он представляет собой массив нетипированных указателей и поэтому годится для хранения набора любых, в том числе разнотипных, данных и объектов. При добавлении/удалении в список данные не создаются и не уничтожаются -- эта обязанность лежит на программисте. Приведем доступные ему методы и свойства класса.

Работа содержит 1 файл

componens.doc

— 980.33 Кб (Скачать)

Другие опции:

fdForceFontExist -- включает возможность предупреждения пользователя о том, что он выбрал несуществующий тппиДт-

fdShowHelp -- включает в состав диалога кнопку Help;

fdLimitSize -- позволяет ограничивать размер выбираемого шрифта.

После успешного завершения диалога можно обращаться к свойству

(Pb) property Font: TFont;

содержащему новый шрифт. Но можно и до завершения просмотреть результаты смены шрифта. Для этого надо определить обработчик события:

(Pb) property OnApply: TFDApplyEvent;

TFDApplyEvent = procedure(Sender: TObject; Wnd: HWND) of object;

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

Компонент TPrinterSetupDialog

TObject-"TPersistent--"TCornponent->TCoiranonDialog-"TPrinterSetupDialog

Модуль DIALOGS

Страница Палитры компонентов Dialogs

Диалоговое окно установки параметров принтера. Оно поддерживается соответствующим драйвером принтера и программисту никаких значений не возвращает, поэтому метод Execute у этого компонента -- не функция, а процедура.

 

Компонент TPrintDlalog

TObject-"TPersistent-->TCornponent->TCoinmonDialog->TPrinterSetupDialog->

TPrintDialog

Модуль DIALOGS

Страница Палитры компонентов Dialogs

Предназначен для настройки параметров вывода текста на принтер. Опции этого диалога определяются свойством:

(pb) property Options: TPrintDialogOptions;

TPrintDialogOption = (poPrintToFile, poPageNums, poSelection, poWarning, poHelp, poDisablePrintToFile) ;

TPrintDialogOptions = set of TPrintDialogOption;

poWaming -- извещает пользователя при инициализации диалога, если в системе нет установленных принтеров.

poHelp -- включает в диалог кнопку Help;

Печать может быть перенаправлена в файл. Для этого в диалог может быть включен специальный флажок Print To File. Состояние его зависит от двух опций:

poPrintToFile -- разрешает появление в диалоге этого флажка;

PoDisablePrintToFile -- флажок показывается серьм цветом и переключение запрещено.

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

вместе с полями для ввода диапазона делается доступным);

poSelection -- разрешает выбор только выделенного фрагмента текста (переключатель Selection делается доступным).

Остальные свойства компонента соответствуют разньм элементам управления диалога (кроме MinPage и MaxPage). Их начальные значения отображаются при вызове метода Execute.

После завершения диалога можно определить с помощью следующего свойства, что именно хочет напечатать пользователь -- все, выделенный текст или диапазон страниц:

(рь) property PrintRange: TPrintRange;

TPrintRange = (prAllPages, prSelection, prPageNums);

В случае prPageNums печататься будут страницы от определяемой свойством

(Pb) property FromPage: Integer;

до определяемой свойством

(РЬ) property ToPage: Integer;

При этом они должны полностью лежать в диапазоне, определенном свойствами:

(Pb) property MinPage: Integer;

fpB) property MaxPage: Integer;

Если пользователь ввел значение FromPage или ToPage, выходящее за пределы этого диапазона, то после нажатия кнопки ОК появится сообщение об ошибке, и диалог не будет завершен.

Если два последних свойства не определены (равны 0), то диапазоны и ограничения не действуют.

Если пользователь выбрал печать в файл, свойство

(Р5) property PrintToFile: Boolean;

будет равно True.

Количество копий, которые необходимо отпечатать, определяется свойством:

(Pb) property Copies: Integer;

Если свойство

(pd) property Collate: Boolean;

устанавлено в True, то печать нескольких копий осуществляется последовательно: полностью первая, затем вторая и т. д. В противном случае печатаются последовательно одинаковые листы всех копий.

 

Компонент TFindDialog

TObject->TPersistent->TCornponent->TCoiranonDialog-"TFindDialog Модуль DIALOGS

Страница Палитры компонентов Dialogs

С помощью этого диалога можно осуществить подготовку к поиску нужного фрагмента в тексте. В этом окне вы можете определить все нужные атрибуты, но написание собственно кода поиска все-таки возложено на программиста.

Рассмотрим опции, определенные в свойстве:

(pb) property Options: TFindOptions;

TFindOption= (frDown, frFindNext, frHideMatchCase, frHideWholeWord, frHideUpDown, frMatchCase, frDisableMatchCase, frDisableUpDown, frDisableWholeWord, frReplace, frReplaceAl1, frWholeWord, frShowHelp) ;

TFindOptions = set of TFindOption;

По умолчанию в диалоге имеется группа радиокнопок, задающих направление поиска текста. Ее можно настроить с помощью опций:

frDown -- в случае наличия этой опции первоначальное направление поиска -- вниз (от начала к концу). Устанавливается соответствующая радиокнопка;

frDisableUpDown -- запрещает выбор направлений. Группа радиокнопок показывается серым цветом;

frHideUpDown -- запрещает выбор направлений и прячет эту группу радиокнопок.

Поиск может осуществляться с учетом регистра символов. Если отмечен флажок Match Case, регистры символов должны совпадать, т. е. в этом случае "Word" не будет равно "word".

За состояние флажка отвечают следующие три опции:

frHideMatchCase -- прячет флажок;

frDisableMatchCase -- показывает флажок, но делает его неактивным. В обоих случаях учет регистра невозможен;

Если эти опции не установлены, флажок в диалоге активен, и его значение может быть изменено пользователем. Его значение соответствует наличию в Options опции frMatchCasc.

Также в диалоге предусмотрен флажок Match Whole Words Only, который разрешает или запрещает поиск заданного текста только в виде целых слов. Опции frHideWholeWord, frDisableWholeWord и frWholeWord имеют тот же смысл, что и три опции предыдущего флажка.

frShowHelp -- включает в состав диалога кнопку Help;

Одна опция является информационной. Когда пользователь нажал кнопку Find Next, то опция frFindNext появляется в множестве Options.

При каждом случае, когда пользователь нажал кнопку Find Next, возникает событие:

(Р1э) property OnFind: TNotifyEvent ;

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

(Pb) property FindText: string;

Координаты места появления диалога на экране могут быть заданы либо в виде точки

property Position: TPoint;

либо по отдельности:

property Left: Integer;

property Top: Integer;

Для вьшолнения рада оптаций программисту доступен дескриптор диалогового окна

(Ro) property Handle: HWnd;

и метод, закрывающий это окно:

procedure CloseDialog;

 

Компонент TReplaceDialog

TObject-->TPersistent-->TComponent->TCominonDialog-"TFindDialog->

->TReplaceDialog

Модуль DIALOGS

Страница Палитры компонентов Dialogs

Этот диалог отличается от предыдущего тем, что позволяет найденный текст заменить на другой, заданный свойством:

(РЬ) property ReplaceText: string;

При нажатии кнопок Replace или Replace All в диалоге возникает событие

(Pb) property OnReplace: TNotifyEvent;

При этом в множество Options добавляется одна из новых опций -- fi-Replace или frReplaceAll. В обработчике этого события нужно предусмотреть поиск и замену текста.

Использование стандартньк диалоговых окон иллюстрирует пример DEMOEDIT. Это простой однооконный редактор текста, который, однако, использует все семь компонентов-диалогов. Для поиска и замены в нем задействован модуль SEARCH, приведенный в одном из примеров фирмы Borland. Модуль можно найти в каталоге DELPHI\DEMOS\TEXTDEMO.

Типовые диалоги

Отдельную группу составляют функции, реализующие простые типовые диалоги (не входящие в Палитру компонентов): посылка сообщения пользователю, получение от него одного из множества возможных ответов, ввод строки. В Windows API для этого предназначалась функция MessageBox. В Delphi существует целый ряд специализированных функций.

Простейшую задачу -- информирование пользователя сообщением -- можно решить при помощи функций:

procedure ShowMessage(const Msg: strings-procedure ShowMessagePos(const Msg: string; X, Y: Integer);

В этом случае диалог состоит из статического текста Msg и кнопки ОК. Вторая функция отличается тем, что диалог можно поместить в требуемую точку (X.Y).

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

function MessageDig(const Msg: string; AType: TMsgDigType; AButtons:

TMsgDigButtons; HelpCtx: Longint)-: Word;

function MessageDlgPos(const Msg: string; AType: TMsgDigType;

AButtons: TMsgDigButtons; HelpCtx: Longint; X, Y: Integer): Word;

Здесь информация представлена в строке Msg и в пиктограмме, соответствующей типу диалога:

TMsgDigType = (mtWarning, mtError, mtlnformation, mtConfirmation, mtCustom) ;

В диалог можно включить любые кнопки из множества:

TMsgDIgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbignore, mbAll, mbHelp) ;

TMsgDigButtons = set of TMsgDIgBtn;

Для типовых случаев уже описаны подмножества кнопок:

mbYesNoCancel = [mbYes, mbNo, mbCancel];

mbOKCancel = [mbOK, mbCancel];

mbAbortRetryIgnore = [mbAbort, mbRetry, mbignore] ;

Параметр HelpCtx указывает контекст системы помощи, который будет активизирован в случае нажатия <F1>.

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

Функция

function InputBox(const ACaption, APrompt, ADefault: string): string;

есть вызов диалога с заголовком ACaption, в котором подсказка APrompt приглашает набрать в редактирующем элементе текст. Первоначально в него загружается текст ADefault. Функция возвращает строку, находившуюся в редактирующем элементе на момент закрытия диалога.

Функция

function InputQuery(const ACaption, APrompt: string;

var Value: string): Boolean;

выполняет аналогичные действия. Набранный текст будет содержаться в строке Value. Однако возвращает она булевское значение, в зависимости от того, нажал ли пользователь OK (<Enter>) или Cancel (<Esc>).

Наконец, если мало только получения ответа, и есть необходимость управлять диалогом во время его существования, воспользуйтесь функцией:

function CreateMessageDialog(const Msg: string; AType: TMsgDigType;

AButtons: TMsgDigButtons): TPorm;

Она конструирует и возвращает указатель на форму, идентичную MessageDig с соответствующими параметрами.

Внешний вид последней группы диалогов можно изменить, переустановив значения, определенные в модуле DIALOGS:

MsgDigButtonStyle: TButtonStyle = bsAutoDetect;

MsgDIgGlyphs: Boolean = True;

 

Работа с файловой системой

Зачастую возможностей стандартных диалогов (компоненты TOpenDialog и TSaveDialog) недостаточно для реалшации замыслов программиста. Во многих современных коммерческих приложениях перед открытием файла есть возможность получить его характеристики и предварительно просмотреть содержимое. Чтобы дать разработчикам доступ к таким функциям, в библиотеку VCL были включены по отдельности и все составные части стандартного диалога -- списки имен дисков, каталогов, файлов и фильтров расширений. Если установить между ними взаимные ссылки, то они будут работать вместе, как в TOpenDialog, безо всякого дополнительного программирования. Вместе с тем, можно описать и специфическую реакцию на изменения этих списков.

Кроме того, в эту группу компонентов включен TDirectoryOutline -- пример настройки компонента TOutline на конкретное приложение. Он отображает файловую структуру в виде дерева и также может работать в связке с остальными компонентами этого раздела.

 

Компонент TDriveComboBox

TObject--"TPersistent-->TComponent--^TControl-->TWinControl->

->TCustornComboBox-"TDriveComboBox

Модуль FILECTRL

Страница Палитры компонентов System

Компонент представляет комбинированный список, содержащий информацию о имеющихся в системе устройствах. При инициализации приложения все они заносятся в этот список. Во время выполнения отображаются односимвольное имя устройства, метка в квадратных скобках и пиктограмма, соответствующая его типу (винчестер, сетевой диск, дисковод CD-ROM и т. п.):

TDriveType = (dtUnknown, dtNoDrive, dtFloppy, dtFixed, dtNetwork, dtCDROM, dtRAM) ;

К сожалению, функция, определяющая тип диска по его номеру или имени, недоступна программисту. Имеющаяся в API Windows функция GetDriveType не умеет распознавать dtCDROM и dtRAM и сообщает о них как о dtFixed.

Имя текущего диска соответствует значению свойства

property Drive: Char;

а имя с меткой (так, как это показывается в списке) -- значению свойства:

property Text;

При этом текст метки может отображаться в верхнем или нижнем регистрах, в зависимости от значения свойства:

(Pb) property TextCase: TTextCase;

TTextCase = (tcLowerCase, tcUpperCase) ;

Пиктограмму типа диска можно получить, используя свойство списка Items.Objects -- каждому устройству соответствует объект типа TBitmap.

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

(Pb) property OnChange: TNotifyEvent;

нужно предусмотреть соответствующий код, например:

procedure TFormI.DriveComboBoxlChange(Sender: TObject);

begin

DirectoryListBoxl.Drive := DriveComboBoxl.Drive ;

end;

Существует и более простой путь для такого связывания. Достаточно связать компонент-список дисков с компонентом-списком каталогов, используя свойство:

(Pb) property DirList: TDirectoryListBox;

Все изменения первого будут автоматически отслеживаться вторым. Компонент

 

TDirectoryListBox

TObject-"TPersistent->TComponent--"TControl->TWinControl-->

-->TCustomListBox->TDirectoryListBox

Модуль FILECTRL

Страница Палитры компонентов System

Компонент представляет список каталогов на текущем устройстве.

Устройство задается свойством

property Drive: Char;

а текущий каталог на нем -- свойством:

property Directory: string;

При помощи метода

function GetIternPath(Index: Integer): string;

можно получить строку, содержащую полный путь к каталогу. Все символы в ней приводятся к верхнему регистру. Параметр Index означает номер каталога в списке (начиная с 0).

Если список каталогов связать со статическим текстом (меткой), пользуясь свойством

(Р)э) property DirLabel: TLabel ;

то в ней также будет отображаться путь к текущему каталогу. При этом, если имя полного пути не помещается в метке, то оно показывается в сокращенном виде (см. функцию MinimizeName).

Метод

procedure OpenCurcent ;

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

Наконец, обновление содержимого списка у этого компонента осуществляет метод:

procedure Update;

Связать список каталогов с компонентом-списком файлов можно, обрабатывая событие:

(РЬ) property OnChange: TNotifyEvent;

или присвоив указатель на последний свойству:

(РЫ property FileList: TFileListBox;

В свойстве Items.Objects списка для каждого его элемента хранится объект типа TBitmap (пиктограмма, представляющая собой открытую или закрытую папку в зависимости от состояния каталога), доступный для чтения и записи.

Информация о работе Справочник по компонентам Дельфи