18.6. КОМПОНЕНТЫ СТРАНИЦЫ WIN3.1

Многие компоненты страницы win3.1 имеют более совершенные аналоги в виде компонентов страницы Win32. Если вы работаете с windows 32, рекомендуется использовать вместо компонентов Win 3.1 компоненты Win32.

18.6.1. TTabSet - набор закладок

Компонент TTabSet представляет собой набор закладок. В отличие от компонента TTabControl он не может служить контейнером для размещения других компонентов и поэтому обычно работает совместно с каким-либо компонентом-контейнером (чаще всего - с TNotebook).

Свойства компонента:

property AutoScroll: Boolean; | Разрешает/запрещает появление стрелок прокрутки, если закладки не умещаются целиком в границах компонента
property BackgroundColor: TColor; | Определяет цвет фона закладок
property DitherBackground: Boolean; | Если содержит True, уменьшается насыщенность цвета BackgroundColor
property EndMargin: Integer; | Отступ закладок от правой границы компонента
property Firstlndex: Integer; | Содержит индекс самой левой закладки, целиком видимой на экране
property SelectedColor: TColor; | Содержит цвет выбранной закладки (обычно совпадает с цветом связанного компонента-контейнера)
property StartMargin: Integer; TTabStyle = (tsStandard, tsOwnerDraw); | Отступ закладок от левой границы компонента
property Style: TTabStyle; | Определяет способ прорисовки закладок: tsStandard - автоматический; tsOwnerDraw - программный
property TabHeight: Integer, | Определяет высоту закладок в пикселях
property Tablndex: Integer; | Содержит индекс выбранной закладки (индексация начинается с 0)
property UnselectedColor: TColor; | Определяет цвет невыбранных закладок
property VisibleTabs: Integer; | Содержит количество закладок, целиком видимых в границах компонента
Методы компонента:
function ItemAtPos(Pos: TPoint): Integer; | Возвращает индекс закладки, которой принадлежит точка Pos
function ItemRect(Item: Integer): TRect; | Возвращает прямоугольник прорисовки закладки с индексом item
procedure SelectNext(Direction: Boolean) ; | Смещает выбор к соседней закладке: Direction - направление смещения (True - вправо)
Для компонента определены следующие события:
TTabChangEvent = procedure (Sender: TObject; NewTab: Integer; var AllowChange: Boolean) of object; | Возникает перед сменой выбранной закладки: NewTab - индекс закладки, которая будет выбрана. В параметре AllowChange обработчик должен разрешить или запретить выбор закладки
property OnChange: TTabChangingEvent; TDrawTabEvent = procedure(Sender: TObject; TabCanvas: TCanvas; R: TRect; Index: Integer; Selected: Boolean) of object; | Возникает при необходимости прорисовать закладку с индексом index, если она имеет стиль tsOwnerDraw: TabCanvas - канва для прорисовки; Selected - содержит True для выбранной закладки
property OnDrawTab: TDrawTabEvent; TMeasureTabEvent = procedure(Sender: TObject; Index: Integer; var TabWidth: Integer) of object-property OnMeasureTab: TMeasureTabEvent; | Возникает перед прорисовкой закладки с индексом index, если она имеет стиль tsOwnerDraw. В параметре TabWidth обработчик должен вернуть ширину закладки

Как уже говорилось, часто компонент TTabSet связывается с компонентом TNotebook для организации многостраничного блокнота с закладками. В этом случае в обработчике событий OnChange или

OnClick компонента следует предусмотреть изменение текущей страницы блокнота. Например:

procedure TFormI.TabSetlChange(Sender: TObject;

NewTab: Integer;

var AllowChange: Boolean);

begin

AllowChange := True; // Разрешаем смену закладки

Notebookl.Pagelndex := NewTab // Меняем страницу блокнота

end;

18.6.2. TNotebook - набор страниц

Многостраничный контейнер TNotebook обычно работает в паре с TTabSet и предназначен для размещения других компонентов на нескольких перекрывающих друг друга страницах (панелях).

Свойства компонента:

property ActivePage: Strings; | Определяет имя верхней страницы блокнота
property Pagelndex: Integers; | Содержит индекс верхней страницы блокнота
property Pages: TStrings; | Содержит набор строк с именами страниц

Ключевым свойством является Pages. С помощью его методов Add, Delete, Find и т. д. можно добавлять и удалять страницы, отыскивать Нужную и т. д. (см. класс TStrings).

Для компонента определено событие

property OnChange: TNotifyEvent;

которое возникает при смене страницы.

18.6.3. TTabbedNotebook - набор страниц с закладками

Компонент TTabbedNotebook представляет собой объединение TTabSet и TNotebook в готовый многостраничный блокнот с заклад-ками. В отличие от TTabSet закладки в TabbedNotebook могут располагаться в несколько рядов.

Свойства ActivePage, Pagelndex И Pages компонента совпадают c одноименными свойствами компонента TNotebook. Свойство property TabsPerRow: Integer; определяет количество закладок в одном ряду.

С помощью метода function GetIndexForPage(const PageName: String): Integer; программа может получить индекс страницы по ее имени PageName.

18.6.4. TOutLine - просмотр иерархических структур

Подобно компоненту TTreeview страницы Win32 компонент Tout-Line предназначен для отображения иерархических структур данных (каталогов, например). Элементом отображения является узел. Каждый узел имеет родительский узел и дочерние узлы. Исключение составляет узел самого верхнего уровня (он не имеет родительского узла) и узлы самых нижних уровней (они не имеют дочерних узлов),

Для каждого узла компонент создает объект класса TOutLineNode. Его свойства:

property Data: Pointers; | Указатель на связанные с узлом данные
property Expanded: Boolean; | Если содержит True, с узлом связан раскрытый список дочерних узлов
property FullPath: String; | Содержит полное имя узла со списком имен всех родительских узлов, разделенных символом ItemSeparator объекта ToutLine
property Hasltems: Boolean; | Содержит True, если с узлом связаны дочерние узлы
property Index: Longint; | Содержит уникальный идентификатор узла в компоненте ToutLine
property IsVisible: Boolean; | Содержит True, если узел виден в окне компонента ToutLine
property Level: Integer; | Определяет уровень иерархии узла. Узел самого верхнего уровня имеет уровень 0, его дочерние узлы - уровень 1, их дочерние узлы - уровень 2 и т. д.
property Text: String; | Определяет имя узла
property Topltem: Longint; | Содержит индекс своего родительского узла первого уровня (родительский узел нулевого уровня не виден в компоненте TOutLine)

Методы класса TOutLineNode:

procedure ChangeLevelBy(Value: TChangeRange) ; | Перемещает уровень узла на один вверх (Value=-1) или вниз(Value=+l) Закрывает список дочерних узлов
procedure Collapse; procedure FullExpand; | Раскрывает список всех своих дочерних узлов на всех уровнях
function GetFirstChild: TTreeNode; | Возвращает ссылку на первый дочерний узел или nil, если нет дочерних узлов
function GetPrevChild(Value: Longint): Longint; | Возвращает индекс узла, предшествующего узлу Value
TAttachMode = (oaAdd, oaAddChild, oalnsert) ; procedure MoveTo(Destination: Longint; AttachMode: TAttachMode) ; | Перемещает узел со всеми потомками в положение, определяемое индексом Destination и режимом AttachMode: oaAdd -добавить последним на том же уровне, что и Destination; oaAddChild -добавить последним к потомкам узла Destination; oalnsert - вставить на место Destination, который смещается ниже него на том же уровне

Свойства компонента TOutLine:

property Canvas: TCanvas; | Определяет канву для прорисовки компонента
property itemHeight: Integer; | Определяет высоту узлов
property Items[Index: Longint]: TOutlineNode; | Открывает доступ к узлу по его индексу
property ItemCount: Longing; | Содержит общее количество узлов
property Lines: TStrings; | Содержит список всех узлов
TOutlineOption = (ooDrawTreeRoot, ooDrawFocusRect, ooStretchBitmaps) ; TOutlineOptions = set of Tout lineOption; property Options: TOutlineOptions; | Определяет атрибуты прорисовки: ooDraw TreeRoot - соединять линии узлов верхнего уровня; ooDrawFocusRect - выделять пунктиром сфокусированный узел; oostretch Bitmaps - масштабировать пиктограммы
TOutlineStyle = (osText, osPlus- MinusText, osPictureText, osPlus- MinusPictureText, osTreeText, osTreePictureText) ; property OutlineStyle: TOutlineStyle; | Задает стиль прорисовки: osText - выводится только текст(без линий); osPlusMinusText - текст и пиктограммы PicturePlus/PictureMinus;osPictureText -текст и пиктограммы PictureOpen/PictureClosed/PictureLeaf;osPlusMinus-PictureText - объединяет два предыдущих стиля; osTreeText - текст и линии связи между узлами; osTreePictureText - объединяет osTreeText и osPictureText
property PictureClosed: TBitmap; | Содержит пиктограмму узла с закрытым списком дочерних узлов. По умолчанию -закрытая папка
property PictureMinus: TBitmap; | Содержит пиктограмму узла с закрытым списком дочерних узлов. По умолчанию - пиктограмма со знаком минус
property PictureOpen: TBitmap; | Содержит пиктограмму узла с открытым списком дочерних узлов. По умолчанию - открытая папка
property PictureLeaf: TBitmap; | Содержит пиктограмму узла, не имеющего дочерних узлов. По умолчанию - пиктограмма документа
property PicturePlus: TBitmap; | Содержит пиктограмму узла с открытым списком дочерних узлов. По умолчанию - пиктограмма со знаком плюс
property Row: Longint; | Содержит индекс сфокусированного узла
property ScrollBars: TScroll-Style; | Определяет наличие полос прокрутки: ssNone - нет полос; ssHorizontal - горизонтальная полоса; ssVertical - вертикальная полоса; ssBoth - и горизонтальная, и вертикальная полоса

Методы компонента:

function Add(Index: Longint; const Text: String): Longint; | Добавляет узел с именем Text как последний на тот же уровень иерархии, что и узел index, и возвращает его индекс (режим oaAdd)
function AddChild(Index: Longint; const Text: String): Longing; | Добавляет дочерний узел с именем Text к узлу index и возвращает его индекс (режим oaAddChild)
function AddChildObject(Index: Longint; const Text: String; const Data: Pointer): Longint; | Добавляет дочерний узел с именем Text и данными Data к узлу index и возвращает его индекс
function AddObject(Index: Long int; const Text: String; const Data: Pointer): Longint; | Добавляет узел с именем Text и с данными Data как последний на тот же уровень иерархии, что и узел index, и возвращает его индекс
procedure BeginUpdate ; | Блокирует перерисовку компонента перед вставкой/удалением нескольких узлов
procedure Clear; | Удаляет все узлы компонента
procedure EndUpdate; | Разрешает перерисовку компонента после вставки/удаления нескольких узлов
procedure FullCollapse; | Закрывает списки всех дочерних узлов на всех уровнях
procedure FullExpand; | Раскрывает списки всех дочерних узлов на всех уровнях
function GetDataItem(Value: Pointer): Longint; | Возвращает индекс узла по его данным
function GetItem(X, Y: Integer): Longint; | Возвращает индекс узла по его координатам
function GetTextItem(Value: String) : Longing; | Возвращает индекс узла по его имени
function Insert(Index: Longint; const Text: String): Longing; | Вставляет узел с именем Text на место узла Index(режим oalnsert)
function InsertObj ect(Index: Longint; const Text: String; const Data: Pointer): Longint; | Вставляет узел с именем Text и данными Data на место узла index (режим oalnsert)
procedure LoadFromFile(const FileName: String); | Загружает содержимое компонента из файла с именем FileName
procedure LoadFromFile(const FileName: Strings; | Сохраняет содержимое компонента в файле
procedure SetUpdateState(Value: Boolean); | С именем FileName если Value=True, соответствует BeginUp date, в противном случае - EndUpdate

Для компонента определены следующие события:

EOutlineChange = procedure (Sender: TObject; Index: Longint) of object; property OnCollapse: EOut lineChange;Возникает при закрытии списка дочерних узлов узда Index |

TOwnerDrawState = set of

(odSelected, odGrayed, odDisabled, odChecked, odFocused) ;

TListBox; Index: Integer; Rect:TRect; State: TOwnerDrawState) of Object;

property OnDrawItem: TDrawItemEvent;

Возникает при необходимости прорисовки узла index: Rect - прямоугольник прори совки; State - состояние узла (odSelected - узел выделен; odDisabled - узел запрещен для выбора; odFocused - узел сфокусирован)

EOutlineChange = procedure (Sender: TObject; Index: Longint) of object; property OnExpand: EOut lineChange;

Возникает при открытии списка дочерних узлов узла Index

18.6.5. THeader - управляющий заголовок

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

Свойства Компонента THeader:

property Sections: TStrings; | Содержит набор заголовков секций. Методами Add, Delete, Insert объекта Sections можно добавлять, вставлять и удалять секции заголовка
property SectionWidth[X: Integer] : Integer; | Содержит ширину секции с индексом index

Для компонента определены следующие события:

TSectionEvent = procedure(Sender: TObject; ASection, AWidth: Integer) of object; | Возникает при завершении изменения размера секции с индексом ASection. AWidth -текущая ширина секции
property OnSized: TSectionEvent; TSectionEvent = procedure(Sender: TObject; ASection, AWidth: Integer) of object-property OnSizing: TSectionEvent; | Возникает в процессе изменения размера секции с индексом ASection. AWidth - текущая ширина секции

18.6.6. TFileListBox - панель с именами файлов

Компонент TFileListBox представляет собой панель с именами файлов. Совместно С компонентами TDriveComboBox, TFilterComboBox и TDirectoryListBox может использоваться для создания диалоговых окон доступа к файлам.

Свойства компонента:

property Directory: String; | Определяет каталог размещения файлов
property Drive: Char; | Определяет диск размещения файлов
property FileEdit: TEdit; property FileName: String; | Объект-редактор для ввода имени файла вручную Введенное или выбранное имя файла
TFileAttr = (ftReadOnly, ftHidden, ftSystem, ftVolumeID, ftDirectory, ftArchive, ftNormal) ; TFileType = set of TFileAttr; property FileType: TFileType; | Определяет типы элементов, показываемых в окне компонента: ftReadOnly - файлы только для чтения; ftHidden - скрытые файлы; ftSystem -системные файлы; ftVolumeID - метки носителей; ftDirectory - каталоги; ftArchive - архивные файлы; ftNormal - обычные файлы
property Mask: String; | Определяет маску выбора файлов
property MultiSelect: Boolean; | Разрешает/запрещает множественный выбор файлов
property ShowGlyphs: Boolean; | Если содержит True, рядом с именами файлов показываются пиктограммы типа файла

Методы компонента:

procedure ApplyFilePath(const EditText: Strings; | Заменяет значения свойств Drive, Directory, FileName и Mask на те, что содержатся в строке EditText
procedure Update; | Обновляет содержимое окна

Для компонента определено событие

property OnChange: TNotifyEvent;

возникающее при любом изменении выбора в окне компонента.

18.6.7. TDirectoryListBox - панель с именами устройств

Компонент TDirectoryListBox представляет собой панель с именами каталогов. Совместно с компонентами TDriveComboBox, tfuterComboBox И TFileListBox может использоваться для создания диалоговых окон доступа к файлам. Свойства компонента:

property CaseSensitive: Boolean; | Содержит True, если файловая система чувствительна к высоте букв
property Directory: String; | Содержит имя каталога
property DirLabel: TLabel; | Указывает связанный с компонентом объект-метку, в котором отображается полный путь к текущему каталогу
property Drive: Char; | Содержит имя диска
property FileList: TFileListBox; | Указывает связанный с компонентом объект TFileListBox, в котором отображается содержимое каталога
property PreserveCase: Boolean; | Содержит True, если файловая система нечувствительна к высоте букв

Методы компонента:

function DisplayCase(const S: String): Strings; | Преобразует буквы строки S к строчным с учетом языкового драйвера, если ни свойство CaseSensitive, ни свойство PreserveCase не содержит True
function FileCompareText(const A, B: String): Integers; | Сравнивает строки а и в с учетом свойства CaseSensitive
function GetItemPath(Index : Integer) : Strings; | Возвращает путь к дочернему каталогу по его индексу
procedure OpenCurrent; | Открывает текущий каталог
procedure Update; | Обновляет текущий каталог

Для компонента определено событие

property OnChange: TNotifyEvent;

возникающее при любом изменении выбора в окне компонента.

18.6.8. TDriveComboBox - список выбора устройства

Компонент TDriveComboBox представляет собой список выбора с именами доступных дисков. Совместно с компонентами TDirectoryListBox, TFilterComboBox И TFileListBox может использоваться для создания диалоговых окон доступа к файлам.

Свойства компонента:

property DirList: TDirectoryList-Box; | Содержит ссылку на объект TDirectoryListBox, в котором отображается структура файлов на диске
property Drive: Char; TTextCase = (tcLowerCase, tcUp-perCase); property TextCase: TTextCase; | Содержит имя текущего диска Определяет отображение буквы диска: tcLowerCase - отображать строчной буквой; tcuppercase - отображать заглавной буквой

Для компонента определено событие

property OnChange: TNotifyEvent;

возникающее при любом изменении выбора в окне компонента, а также событие

property OnDropDown: TNotifyEvent;

связанное с раскрытием списка.

18.6.9. TFilterComboBox - список выбора с расширениями файлов

Компонент TFilterComboBox представляет собой список выбора с расширениями файлов. Совместно с компонентами TDirectoryListBox, TDriveComboBox и TFiieListBox может использоваться для создания диалоговых окон доступа к файлам.

Свойства компонента:

property FileList: TFiieListBox; | Указывает связанный с компонентом объект для просмотра файлов.
property Filter: String; | Содержит фильтр в виде поясняющего текста и маски.
property Mask: String; property Text: TCaption; | Содержит текущую маску выбора файлов. Содержит поясняющий текст фильтра.

Для компонента определено событие

property OnChange: TNotifyEvent;

возникающее при любом изменении выбора в окне компонента, а также событие

property OnDropDown: TNotifyEvent;

связанное с раскрытием списка.