![]() |
![]() |
![]() |
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;
связанное с раскрытием списка.
![]() |
![]() |
![]() |