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;

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