СПРАВОЧНИК ПО ОБЪЕКТАМ.
THistory
+----------+
| TObject |
+----+-----+
+----+-----+
| TView |
+----+-----+
+====+=====+
| THistory |
+==========+
Объект THistory реализует список для
значений, действий или выборов.
связываютя с объектом TInputLine и со
Информация списка истории хранится в
Когда блок заполняется, наиболее стары
удаляются, а новые добавляются.
Объект THistory показан как кнопка (|щ|
ввода. Когда пользователь отмечает кно
Vision открывает окно истории (смотри
просмотром истории (смотри THistoryV
список предыдущих элементов.
Различные строки ввода могут использ
истории, используя одинаковый номер ID.
Поля
Link: PInputLine; Только чтение
Указатель на связанный объект TInputLine.
HistoryID HistoryID: Word; Только чтение
Каждый список истории имеет уникальный номер ID,
назначаемый программистом. Различные объекты историй в
различных окнах могут разделять список истории, используя
одинаковый ID номер.
Методы
Init constructor Init(var Bounds: TRect; ALink: PInputLine;
AHistoryID: Word);
Создает объект THistоry заданного размера, вызывая
TView.Init, затем устанавливает поля Link и HistoryId
значениями, заданными в аргументах. Поле Options
устанавливатся в ofPostProcess, а EventMask в evBroadcast.
См. так же: TView.Init
Load constructor Load(var S: TStream);
Создает и инициализирует объект History из TStream,
вызывая TView.Load(S) и читая Link и HistoryId из S.
См. так же: TView.Store
Draw procedure Draw; virtual; Перекрывается: Редко
Рисует кнопку History в палитре по умолчанию.
GetPalette function GetPalette: PPalette; virtual;
Перекрывается: Иногда
Возвращает указатель на умалчиваемую палитру CHistory.
Store procedure Store(var S:TStream);
Сохраняет объект THistory в TStream, вызывая
TView.Store(S), затем записывает Link и HistoryId в S.
См. так же: TView.Load
Палитра
Кнопки истории используют палитру по умолчанию CHistory
для отображения 14 и 20-го элементов в палитру
стандартного диалогового окна.
1 2
+====+====+
CHistory | 14 | 20 |
+==+=+=+==+
Стрелка --------+ +------- Стороны
THistoryViewer Dialogs
THistoryViewer - прямой потомок TListViewer. Он
используется системой списка истории и появляется внутри
окна истории при отметке кнопки истории. Для детального
описания взаимодействия THistory, THistoryWindow и
THistoryViewer смотри THistory в этой главе.
Поля
HistoryID HistoryID: Word; Только чтение
HistoryId - это ID номер списка истории, отображаемого в
этом видимом элементе.
Методы
Init constructor Init(var Bounds:TRect;
AHScrollBar, AVScrollBar: PScrollBar; AHistoryID: Word);
Init инициализирует видимый элемент просмотра списка,
вначале вызывая TListViewer.Init для установки границ,
одной колонки и двух полос скроллинга, передаваемых в
AHScrollBar и AVScrollBar. Видимый элемент связывается
затем со списком истории, с полем HistoryId,
установленным в значение, переданное в AHistory. Этот
список проверяется затем на длину так, что диапазон списка
устанавливается в число списка. Первый элемент в списке
истории дан как активный. Диапазон горизонтального
скроллинга устанавливается в соответствие с самым широким
элементом списка.
См. так же: TListViewer.Init
GetPalette function GetPalette: PPalette; virtual;
Перекрывается: Иногда
Возвращает указатель на умалчиваемую палитру
CHistoryViewer.
GetText function GetText(Item: Integer; MaxLen: Integer): String;
virtual; Перекрывается: Редко
Возвращает строку Item в связанном списке истории. GetText
вызывается виртуальным методом Draw для каждого видимого
элемента в списке.
См. так же: TListViewer.Draw, HistoryStr function
HandleEvent procedure HandleEvent(var Event: TEvent); virtual;
Перекрывается: Иногда
Видимый элемент просмотра истории управляет двумя видами
событий; все другие передаются в TListViewer.HandleEvent.
Двойная отметка или нажатие клавиши Enter будут завершать
модальное состояние окна истории с командой cmOK.
При нажатии клавиши Esc или получении командного события
cmCancel, выбор списка истории будет отменен.
См. так же: TListViewer.HandleEvent
HistoryWidth function HistoryWidth: Integer;
Возвращает длину самой длинной строки в списке истории,
связанном с HistoryId.
Палитра
Объекты просмотра истории используют палитру по умолчанию
CHistoryViewer для отображения в 6 и 7 элементы палитры
стандартного диалогового окна.
1 2 3 4 5
+===+===+===+===+===+
CHistoryViewer | 57| 58| 58| 61| 62|
+=+=+=+=+=+=+=+=+=+=+
Активный ---------+ | | | +-- Разделитель
Неактивный -----------+ | +------ Выбранный
Сфокусированный ----------+
THistoryWindow Dialogs
THistoryWindow - это специализированный наследник от
TWindow, используемый для объекта просмотра списка
истории, когда пользователь отмечает кнопку истории,
стоящую за строкой ввода. По умолчанию окно не имеет
заголовка и номера. Рамка окна истории имеет закрывающую
кнопку, поэтому окно может быть закрыто, но не может
изменить размер или масштабироваться.
Для деталей по использованию списков истории и связанных
с ними объектов см. THistory в этой главе.
Поля
Viewer Viewer: PListViewer;
Viewer указывает на список просмотра окна истории.
Методы
Init constructor Init(var Bounds: TRect; HistoryId: Word);
Вызывает TWindow.Init для установки окна с заданными
границами, пустой строкой заголовка и без номера окна
(wnNoNumber). Поле TWindow.Flags устанавливается в
wfClose, чтобы обеспечить закрывающую кнопку и объект
просмотра истории создается, чтобы показать элементы
списка истории, заданные через HistoryID.
См. так же: TWindow.Init, THistoryWindow.InitViewer
GetPalette function GetPalette: PPalette; virtual;
Перекрывается: Иногда
Возвращает указатель на палитру по умолчанию
CHistoryWindow.
GetSelection function GetSelection: String; virtual;
Перекрывается: Никогда
Возвращает строковое значение активного элемента из
просмотра истории.
См. так же: THistoryViewer.GetText
InitViewer procedure InitViewer(HistoryOd: Word); virtual;
Перекрывается: Никогда
Создает и вставляет объект THistoryViewer внутри границ
окна истории со списком, заданным через HistoryId.
Стандартные полосы скроллинга размещены на рамке окна для
скольжения по списку.
См. так же: THistoryViewer.Init
Палитра
Объекты окна истории используют по умолчанию палитру
CHistoryWindow для отображения на элементы с 19 по 25-й в
палитре стандартного диалогового окна.
1 2 3 4 5 6 7
+====+====+====+====+====+====+====+
CHistoryWindow | 10 | 11 | 12 | 13 | 14 | 14 | 14 |
+==+=+==+=+==+=+==+=+==+=+==+=+==+=+
Пассивная рамка --+ | | | | | +-- Выбранный текст
Активная рамка -------+ | | | |
Кнопка рамки ---------------+ | | +------ Нормальный текст
| |
| +-------- Элементы управления
+------------- Область страницы
TInputLine Dialogs
+-------------+
| TObject |
+------+------+
+------+------+
| TView |
+------+------+
+======+======+
| TInputLine |
+=============+
Объект TInputLine обеспечивает редактор строк ввода. Он
управляет вводом с клавиатуры и мышки и перемещением
помеченных блоков в различных функциях редактирования
строки (см. TInputLine.HandleEvent). Выбранный текст
удаляется и заменяется первым введенным текстом. Если
MaxLen больше размера по Х (Size.X), поддерживается
горизонтальный скроллинг, который указывается правой и
левой стрелками.
Методы GetData и SetData предназначены для записи и чтения
строк данных (через поле указателя Data) в данную запись.
TInputLine.SetState упрощает перерисовку видимого элемента
соответствующим цветом, когда состояние изменяется из или
в sfActive и sfSelected.
Строка ввода часто имеет ассоциированные с ним объекты
TLabel и/или THistory.
TInputLine можно расширить для обработки типов данных
отличных от строк. Чтобы сделать это, Вы добавляете новые
поля и перекрываете методы Init, Load, Store, Valid,
DataSize, GetData и SetData. Например, чтобы определить
строку ввода числа, Вы можете задать минимальное и
максимальные допустимые значения, которые будут
проверяться функцией Valid. Эти минимальные и максимальные
поля будут загружаться и сохраняться в потоке методами
Load и Store. Valid модифицируется для проверки того, что
значение находится в допустимом диапазоне. DataSize
модифицируется для включения размера диапазона новых полей
(вероятно SizeOf(Longint) для каждого). В этом примере не
обязательно добавлять поле для хранения числового
значения. Оно может храниться как строковое значение
(которое уже обрабатывается в TInputLine) и
преобразовываться из строки в числовое значение и обратно
методами GetData и SetData соответственно.
Поля
Data Data: PString; Чтение/Запись
Указатель на строку, содержащую редактируемую информацию.
MaxLen MaxLen: Integer; Только чтение
Максимальная длина, допустимая для строки, включая байт
длины.
См. так же: TInputLine.DataSize
CurPos CurPos: Integer; Чтение/Запись
Индекс на точку вставки (т.е. на текущую позицию курсора).
См. так же: TInputLine.SelectAll
FirstPos FirstPos: Integer; Чтение/Запись
Индекс на первый отображаемый символ.
См. так же: TInputLine.SelectAll
SelStart SelStat: Integer; Только чтение
Индекс на начало выбранной области (т.е. на первый символ
отмеченного блока).
См. так же: TInputLine.SelectAll
SelEnd SelEnd: Integer; Только чтение
Индекс на конец выбранной области (т.е. на последний
символ отмеченного блока).
См. так же: TInputLine.SelectAll
Методы
Init constructor Init(var Bounds: TRect; AMaxLen: Integer);
Создает прямоугольник ввода с заданными значениями,
вызывая TInputLine.Init. State устанавливается в
sfCursorVis, Options устанавливается в (ofSelectable +
ofFirstClick), и MaxLen устанавливается в AMaxLen. Память
распределяется и очищается под AMaxLen + 1 байт и поле
Data устанавливается для указания этого распределения.
См. так же: TView.Init, TView.sfCursorVis,
TView.ofSelectable, TView.ofFirstClick
Load constructor Load(var S: TStream);
Создает и инициализирует объект TInputLine, вызывая TView.
Load(S) для загрузки видимого элемента из потока, затем
читает целочисленные поля, используя S.Read, распределяет
MaxLen+1 байт через Data, вызывая GetMem. Наконец
устанавливает байт длины строки и загружает данные из
потока двумя дополнительными вызовами S.Read. Load
используется совместно с TInputLine.Store для сохранения и
восстановления объектов TInputLine из TStream.
Перекрывайте этот метод, если Вы определили потомков,
содержащих дополнительные поля.
См. так же: TView.Load, TInputLine.Store, TStream.Read
Done destructor Done; virtual; Перекрывается: Редко
Освобождает память Data, затем вызывает TView.Done для
разрушения объекта TInputLine.
См. так же: TView.Done
DataSize function DataSize: Word; virtual; Перекрывается: Иногда
Возвращает размер записи для TInputLine.GetData и
TInputLine.SetData. По умолчанию возвращается MaxLen+1.
Перекройте этот метод, если Вы определили потомков для
обработки других типов данных.
См. так же: TInputLine.GetData, TInputLine.SetData
Draw procedure Draw; virtual; Перекрывается: Редко
Рисует прямоугольник ввода и его данные. Прямоугольник
рисуется соответствующим цветом в зависимости от того,
является ли он sfFocused или нет (т.е. находится ли в
видимом элементе курсор или нет) и стрелки рисуются, если
строка ввода превышает размер видимого элемента (в любом
или в обоих направлениях). Любые выбранные (отмеченный
блок) символы рисуются соответствующим цветом.
GetData procedure GetData(var Rec); virtual; Перекрывается: Иногда
Записывает DataSize байт из строки Data^ в запись.
Используется с TInputLine.SetData в ряде программ,
например во временной памяти или при передаче строки ввода
в другие видимые элементы. Перекройте этот метод, если Вы
определяете потомка для обработки нестроковых типов
данных. Используйте этот метод для преобразования Ваших
типов данных в строку, редактируемую с помощью TInputLine.
См. так же: TInputLine.DataSize, TInputLine.SetData
GetPalette function GetPalette: PPalette; virtual;
Перекрывается: Иногда
Возвращает указатель на палитру по умолчанию CInputLine.
HandleEvent procedure HandleEvent(var Event: TEvent); virtual;
Перекрывается: Иногда
Вызывает TView.HandleEvent, которая обрабатывает все
события от мышки и клавиатуры, если прямоугольник ввода
выбран. Этот метод реализует стандартные функции
редактирования.
Функции редактирования включают: отметку блока мышкой;
удаление блока, вставку или перекрытие элемента управления
с автоматическим изменением формы курсора; автоматический
и ручной скроллинг (зависит от относительных размеров
строки Data и Size.X); ручной горизонтальный скроллинг
через отметку мышкой на кнопках стрелок; ручное движение
курсора с помощью стрелок Home и End; удаление символа и
блока с помощью Del и Ctrl-G. Видимый элемент
перерисовывается при необходимости и поля TInputLine
соответственно изменяются.
См. так же: sfCursorIns, TView.HandleEvent,
TIputLine.SelectAll
SelectAll procedure SelectAll(Enable: Boolean);
Устанавливает CurPos, FirstPos и SelStart в 0. Если Enable
установлен в True, SelEnd устанавливается в Length(Data^)
выбирая таким образом всю строку ввода. Если Enable
установлен в False, SelEnd устанавливается в 0 снимая
таким образом выбор всей строки. Наконец, видимый элемент
перерисовывается вызовом DrawView.
См. так же: TView.DrawView
SetData procedure SetData(var Rec); virtual; Перекрывается: Иногда
По умолчанию читает DataSize байт из записи в строку Data^
и вызывает SelectAll(True) для установки CurPos, FirstPos
и SelStart в 0; SelEnd устанавливается на последний символ
Data^ и видимый элемент перерисовывается. Перекройте этот
метод, если Вы определили потомка для обработки
нестроковых типов данных. Используйте этот метод для
преобразования из строки в Ваш тип данных после
редактирования с помощью InputLine.
См. так же: TInputLine.DataSize, TInputLine.GetData,
TView.DrawView
SetState procedure AetState(AState: Word; Enable: Boolean);
virtual; Перекрывается: Редко
Вызывается, когда прямоугольник ввода должен быть
перерисован (например при изменении палитры) после
изменения State. Вызов TView.SetState устанавливает или
очищает поле State видимого элемента заданными битами
AState. Затем, если AState - sfSelected или если AState -
sfActive и прямоугольник ввода - sfSelected, то вызывается
SelectAll(Enable).
См. так же: TView.SetState, TView.DrawView
Store procedure Store(var S: TStream);
Сохраняет видимый элемент в потоке, вызывая
TView.Store(S), затем сохраняет 5 целочисленных полей и
строку Data вызовами S.Write. Используется совместно с
TInputLine.Load для сохранения и чтения всего объекта
TInputLine. Перекройте этот метод, если Вы определяете
потомка, который содержит дополнительные поля.
См. так же: TView.Store, TInputLine.Load, TStream.Write
Палитра
Строки ввода используют палитру по умолчанию CInputLine
для отображения в элементы с 19 по 21-й в палитре
стандартного диалогового окна.
1 2 3 4
+====+====+====+====+
CInputLine | 19 | 19 | 20 | 21 |
+==+=+==+=+==+=+==+=+
Пассивный -----+ | | +--- Стрелка
Активный -----------+ +-------- Выбранный
TLabel Dialogs
+-------------+
| TObject |
+-----+-------+
+-----+-------+
| TView |
+-----+-------+
+=====+=======+
| TStaticText |
+=====+=======+
+-----+-------+
| TLabel |
+-------------+
Объект TLabel - это текст в видимом элементе, который
может быть выбран (подсвечен) отметкой мышки, клавишами
курсора или коротким выбором Alt-буква. Метка обычно
присоединена через указатель PView к другому видимому
элементу управления, такому как строка ввода, кластер или
просмотр списка для пояснения пользователю. Выбор (или
нажатие) метки будет выбирать присоединенный элемент
управления. Метка так же будет подсвечиваться, когда
выбран связанный элемент управления.
Поля
Link Link: PView; Только чтение
Указывает на элемент управления, связанный с этой меткой.
Light Light: Boolean; Только чтение
Если True - метка, а связанный с ней элемент управления
будут выбираться и подсвечиваться.
Методы
Init constructor Init(var Bounds: TRect; AText: String; ALink:
PView);
Создает объект TLabel заданного размера, вызывая
TStaticText.Init, затем устанавливает поле Link в ALink
для связывания с элементом управления (задайте Alink
равным nil, если элемент управления не требуется). Поле
Option устанавливается в ofPreProcess и ofPostProcess.
EventMask устанавливается evBroadcast. Поле AText
назначается полю Text через TStaticText.Init. AText может
задать клавишу короткого набора для метки, окружив
соответствующую букву "~".
См. так же: TStaticText.Init
Load constructor Load(var S: TStream);
Создает и загружает объект TLabel из потока, вызывая
TStaticText.Load, GetPeerViewPtr(S, Link) для установки
связи с ассоциированным элементом управления (если он
есть).
См. так же: TLabel.Store
Draw procedure Draw; virtual; Перекрывается: Никогда
Рисует видимый элемент соответствующим цветом из палитры
по умолчанию.
GetPalette function GetPalette: PPalette; virtual;
Перекрывается: Иногда
Возвращает указатель на палитру по умолчанию CLabel.
HandleEvent procedure HandleEvent(var Event: TEvent); virtual;
Перекрывается: Никогда
Обрабатывает все события, вызывая TStaticText.HandleEvent.
Если evMouseDown или если получено событие от клавиши
короткого набора, выбирается связанный элемент управления
(если он есть). Этот метод так же обрабатывает общие
события cmReceivedFocus и cmReleasedFocus от связанного
элемента управления для настройки значения поля Light и
перерисовки метки.
См. так же: TView.HandleEvent, cmXXXX константы команд
Store procedure Store(var S: TStream);
Сохраняет видимый элемент в потоке, вызывая
TStaticText.Store, затем записывает связь с
ассоциированным элементом управления, вызывая
PutPeerViewPtr.
См. так же: TLabel.Load
Палитра
Метки используют палитру по умолчанию CLabel для
отображения в элементы 7, 8 и 9 палитры стандартного
диалога.
1 2 3 4
+====+====+====+====+
CLabel | 7 | 8 | 9 | 9 |
+==+=+==+=+==+=+==+=+
Нормальный текст + | | +--- Короткая выбранная
Выбранный текст ------+ +-------- Нормальная выбранная
TListBox Dialogs
+-------------+
| TObject |
+------+------+
+------+------+
| TView |
+------+------+
+------+------+
| TListViewer |
+------+------+
+======+======+
| TListBox |
+=============+
TListBox, порожденный от TListViewer, помогает Вам
создавать наиболее часто используемые окна списков
отображающих коллекции строк таких, как имена файлов.
Объекты TListBox отображают списки таких элементов в одну
или более колонок с возможной вертикальной полосой
скроллинга. Горизонтальные полосы скроллинга не
поддерживаются в TListViewer. Наследуемые методы
TListViewer позволяют Вам выбрать (и подсветить) элементы
мышкой или через клавиатуру. TListBox не перекрывает
TListViewer.HandleEvent и TListViewer.Draw, поэтому Вы
должны просмотреть их описание до использования TListBox в
своих программах.
TListBox имеет дополнительное поле List, которое указывает
на объект TCollection, содержащий выводимые и выбираемые
элементы. Ответственность за вставку данных в TCollection
лежит на Вас так же как и действия, выполняемые при выборе
элемента.
TListViewer наследует метод Done от TView, поэтому Вы так
же отвечаете за освобождение содержимого List при
окончании работы. Вызов NewList будет освобождать старый
список, поэтому вызов NewList(nil) и последующее
освобождение окна списка будут освобождать все.
Поля
List List: PCollection; Только чтение
List указывает на коллекцию элементов для просмотра. Это
может быть коллекция PString, представляющая текстовые
элементы.
Методы
Init constructor Init(var Bounds: TRect; ANumCols: Word;
AScrollBar: PScrollBar);
Создает окно списка с заданным размером, числом колонок и
вертикальной полосой скроллинга, указываемой указателем
AScrollBar. Этот метод вызывает TListViewer.Init с
аргументом горизонтальной полосы скроллинга nil.
Поле List первоначально nil (пустой список) и наследуемое
поле Range устанавливается в 0. Ваша программа должна
задать TCollection, содержащую строки (или другие объекты
для вывода). Поле List должно быть установлено на эту
коллекцию с использованием NewList.
См. так же: TListViewer.Init, TListBox.NewList
Load constructor Load(var S: TStream);
Создает объект TListBox и загружает его значениями из
TStream. Этот метод вызывает метод TListViewer.Load, затем
устанавливает List, читая указатель List из S с помощью S.
Get.
См. так же: TListViewer.Load, TListBox.Store, TStream.Get
DataSize function DataSize: Word; virtual; Перекрывается: Иногда
Возвращает размер читаемых и записываемых данных для
записей, передаваемых в TListBox.GetData и
TListBox.SetData. Эти 3 метода полезны для инициализации
групп. По умолчанию TListBox.DataSize возвращает размер
указателя плюс размер слова (для List и выбранного
элемента). Вам может потребоваться перекрыть этот метод
для Вашей программы.
См. так же: TListBox.GetData, TListBox.SetData
GetData procedure GetData(var Rec); virtual; Перекрывается: Иногда
Записывает данные объекта TListBox в запись. По умолчанию
этот метод пишет в Rec текущие поля List и Focused. Вам
может потребоваться перекрыть этот метод для Вашей
программы.
См. так же: TListBox.DataSize, TListBox.SetData
GetText function GetText(Item: Integer; MaxLen: Integer): String;
virtual; Перекрывается: Иногда
Возвращает строку из вызываемого объекта TListBox. По
умолчанию возвращаемая строка получается из элемента Item
в TCollection, используя PString(List^.At(Item))^. Если
List содержит не строковые объекты, Вам необходимо
перекрыть этот метод. Если List - nil, GetText возвращает
пустую строку.
См. так же: TCollection.At
NewList procedure NewList(AList: PCollection); virtual;
Перекрывается: Редко
Если AList не nil, новый список, заданные в AList,
заменяет текущий List. Наследуемое поле Range
устанавливается в поле Count новой TCollection и первый
элемент активизируется вызовом FocusItem(0). Наконец,
новый список отображается вызовом DrawView. Заметим, что
если предыдущее поле List не nil, оно освобождается до
назначения нового списка значений.
См. так же: TListBox.SetData, TListViewer.SetRange,
TListViewer.FocusItem, TView.DrawView
SetData procedure SetData(var Rec); virtual; Перекрывается: Иногда
Заменяет текущий список со значениями List и Focused,
считанными из Rec. SetData вызывает NewList так, чтобы
новый список отображался с корректным активным элементом.
Как с GetData и DataSize, Вам может потребоваться
перекрыть этот метод для Вашей программы.
См. так же: TListBox.DataSize, TListBox.GetData,
TListBox.NewList
Store procedure Store(var S:TStream);
Записывает окно списка в TStream, вызывая TListView.Store,
затем выводит коллекцию в список, вызывая S.Put(List).
См. так же: TListBox.Load, TListViewer.Store, TStream.Put
Палитра
Окна списка используют палитру по умолчанию CListViewеr,
отображая элементы с 26 по 29 в палитру стандартной
программы.
1 2 3 4 5
+===+===+===+===+===+
CListViewer | 25| 26| 27| 28| 29|
+=+=+=+=+=+=+=+=+=+=+
Активный ------+ | | | +-- Разделитель
Неактивный --------+ | +------ Выбранный
Сфокусированный -------+
TListViewer Views
+-------------+
| TObject |
+-----+-------+
+-----+-------+
| TView |
+-----+-------+
+=====+=======+
| TListViewer |
+=====+=======+
+-----+-------+
| TListBox |
+-------------+
Тип объекта TListViewer - это базовый тип, из которого
порождаются просмотры списков различного вида такие, как
TListBox. Основные поля и методы TListViewer предоставляют
следующие функции:
- Видимый элемент для отображения связанных списков
элементов (но не списков).
- Управление одним или двумя полосами скроллинга.
- Скроллинг списков по двум координатам.
- Загрузка и сохранение видимого элемента и его полос
скроллинга из и в TStream.
- Возможность выбора элементов списка мышкой или
клавишами.
- Метод Draw поддерживающий изменение размера и скроллинг.
TListViewer имеет абстрактный метод GetText так, что Вам
потребуется предоставить механизм создания и манипуляции
отображаемых элементов текста.
TListViewer не имеет собственного механизма запоминания
списка. Используйте его для отображения скроллингуемых
списков, массивов, связанных списков или подобных структур
данных. Вы так же можете использовать его наследников
таких, как TListBox, которые ассоциируют коллекцию с
просмотром списка.
Поля
HScroolBar HScrollBar: PScrollBar; Только чтение
Указатель на горизонтальную полосу скроллинга, связанную с
этим видимым элементом. Если nil, видимый элемент не имеет
такой полосы скроллинга.
VScroolBar VScrollBar: PScrollBar; Только чтение
Указатель на вертикальную полосу скроллинга, связанную с
этим видимым элементом. Если nil, видимый элемент не имеет
такой полосы скроллинга.
NumCols NumCols: Integer; Только чтение
Число колонок в элементе управления списком.
TopItem TopItem: Integer; Чтение/Запись
Номер верхнего отображаемого элемента. Элементы нумеруются
от 0 до Range-1. Это число зависит от числа колонок,
размера видимого элемента и значения Range.
См. так же: Range
Focused Focused: Integer; Только чтение
Номер активного элемента. Элементы нумеруются от 0 до
Range-1. Первоначально устанавливается в 0 - первый
элемент, Focused может изменяться отметкой мышки или
выбором через пробел.
См. так же: Range
Range Range: Integer; Только чтение
Общее число элементов в списке. Элементы нумеруются от 0
до Range-1.
TListViewer.SetRange
Методы
Init constructor Init(var Bounds: TRect; ANumCols: Integer;
AHScrollBar, AVScrollBar: PScrollBar);
Создает и инициализирует объект TListViewer заданного
размера, вызывая TView.Init. Поле NumCols устанавливается
в ANumCols. Options устанавливается в (ofFirstClick +
ofFirstSelectable) так, что выбор мышкой этого элемента
будет передаваться в TListViewer.HandleEvent. EventMask
устанавливается в evBroadcast. Начальные значения Range и
Focused - 0. Указатели на вертикальную и/или
горизонтальную полосы скроллинга можно задать через
аргументы AVScrollBar и AHSсrollBar. Если Вам не нужны
полосы скроллинга, можно установить один из них или оба в
nil. Эти значения аргументов назначаются полям VScrollBar
и HScrollBar.
Если Вы задали полосы скроллинга, их поля PgStep и ArStep
будут настраиваться в соответствии с размером TListViewer
и числом колонок. Например, для одноколоночного
TListViewer вертикальный PgStep равен Size.Y-1, а
вертикальный ArStep равен 1.
См. так же: TView.Init, TScrollBar.SetStep
Load Load constructor Load(var S: TStream);
Создает объект TListViewer, вызывая TView.Load. Полосы
скроллинга, если они есть, так же загружаются из потока с
использованием вызовов GetPeerViewPtr. Все целочисленные
поля загружаются с использованием S.Read.
См. так же: TView.Load, TListViewer.Store
ChangeBounds ChangeBounds(var Bounds: TRect); virtual;
Перекрывается: Никогда
Изменяет размер объекта TListViewer, вызывая
TView.ChangeBounds. Если назначена горизонтальная полоса
скроллинга, этот метод при необходимости настраивает
PgStep.
См. так же: TView.ChangeBounds, TScrollBar.ChangeStep
Draw procedure Draw; virtual; Перекрывается: Никогда
Рисует объект TListViewer палитрой по умолчанию, вызывая
GetText для каждого отображаемого элемента, принимая во
внимание активные и выбранные элементы и является ли
видимый элемент sfActive.
См. так же: TListViewer.GetText
FocusItem procedure FocusItem(Item: Integer); virtual;
Перекрывается: Никогда
Делает данный элемент активным, устанавливая поле Focused
в Item. Этот метод так же устанавливает поле Value
вертикальной полосы скроллинга (если есть) в Item и
настраивает поле TopItem.
См. так же: TListViewer.IsSelected, TScrollBar.SetValue
GetPalette function GetPalette: PPalette; virtual;
Перекрывается: Иногда
Возвращает указатель на палитру по умолчанию.
GetText function GetText(Item: Integer; MaxLen: Integer): String;
virtual; Перекрывается: Всегда
Это абстрактный метод. Порожденные типы должны определить
механизм для возвращения строки, не превышающей MaxLen по
индексу, заданному в Item.
См. так же: TListViewer.Draw
IsSelected function IsSelected(Item: Integer): Boolean; virtual;
Перекрывается: Никогда
Возвращает True, если Item активный, т.е. если Item =
Focused.
См. так же: TListViewer.FocusItem
HandleEvent procedure HandleEvent(var Event: TEvent); virtual;
Перекрывается: Редко
Обрабатывает события, вызывая TView.HandleEvent. Отметки
мышкой и "автоматические" движения по списку будут
изменять активный элемент. Активные элементы могут быть
выбраны двойным нажатием мышки. Обрабатываются события от
клавиатуры: пробел выбирает текущий активный элемент;
клавиши стрелок, PgUp, PgDn, Ctrl-PgUp, Ctrl-PgDn, Home и
End изменяют активный элемент. Наконец общие сообщения от
полос скроллинга обрабатываются, изменяя активный элемент
и перерисовывая видимый элемент.
См. так же: TView.HandleEvent, TListViewer. FocusItem
SelectItem procedure SelectItem(Item: Integer); virtual;
Перекрывается: Иногда
Абстрактный метод для выбора элемента, индексируемого
через Item.
См. так же: TListViewer.FocusItem
SetRange procedure SetRange(ARange: Integer);
Устанавливает поле Range в ARange. Если вертикальная
полоса скроллинга была задана, ее параметры настраиваются.
Если текущий активный элемент выходит за новый Range, поле
Focused устанавливается в 0.
См. так же: TListViewer.Range, TScrollBar.SetParams
SetState procedure SetState(AState: Word; Enable: Boolean);
virtual; Перекрывается: Редко
Вызывает TView.SetState для изменения состояния объекта
TListViewer, если Enable - True. В зависимости от
аргумента AState это приводит к отображению или скрытию
видимого элемента. Дополнительно, если AState - sfSelected
и sfActive, полосы скроллинга перерисовываются; если
AState - sfSelected, но не sfActive, полосы скроллинга
скрываются.
См. так же: TView.SetState, TScrollBar.Show,
TScrollBar.Hide
Store procedure Store(var S: TStream);
Вызывает TView.Store для сохранения объекта TListViewer в
потоке, затем сохраняет объекты полос скроллинга (если они
есть) используя PutPeerViewPtr, наконец сохраняет
целочисленные поля через S.Write.
См. так же: TView.Store, TListViewer.Load
Палитра
Списки просмотра используют палитру по умолчанию
CListViewer, отображая элементы с 26 по 29-й в палитру
стандартной программы.
1 2 3 4 5
+===+===+===+===+===+
CListViewer | 25| 26| 27| 28| 29|
+=+=+=+=+=+=+=+=+=+=+
Активный ------+ | | | +-- Разделитель
Неактивный --------+ | +------ Выбранный
Сфокусированный -------+
TMenuBar Menus
+------------+
| TObject |
+------+-----+
+------+-----+
| TView |
+------+-----+
+------+-----+
| TMenuView |
+----+---+---+
+--------+ +------+
+====+=====+ +----+-----+
| TMenuBar | | TMenuBox |
+==========+ +----------+
Объекты TMenuBar представляют полосы горизонтального меню,
из которого меню может быть выбрано через:
- прямую отметку.
- F10 и короткую клавишу.
- выбор (подсветку) и нажатие Enter.
- горячие клавиши.
Выборы главного меню отображаются в верхней полосе меню.
Они представлены объектом типа TMenuBar обычно
принадлежащему объекту TApplication. Подменю отображаются
в объектах типа TMenuBox. TMenuBar и TMenuBox порождаются
от абстрактного типа TMenuView.
Для большинства программ на Turbo Vision Вы не включаете
прямо объекты меню. Перекрывая TApplication.InitMenuBar
соответствующим набором вложенных вызовов New, NewSubMenu,
NewItem и NewLine, Turbo Vision выполняет это.
Методы
Init constructor Init(var Bounds: TRect; AMenu: PMenu);
Создает полосу меню, заданную через Bounds, вызывая
TMenuView.Init. GrowMode установлена в gfGrouHiX. Поле
Options установлено в ofPreprocess для возможности работы
с горячими клавишами. Поле меню установлено в AMenu,
задавая элементы меню.
См. так же: TMenuView.Init, gfXXXX флаги grow mode, ofXXXX
флаги опций, TMenuView.Menu
Draw procedure Draw; virtual; Перекрывается: Редко
Рисует полосу меню палитрой по умолчанию. Поля Name и
Disabled каждой записи TMenuItem в связанном списке
читаются, чтобы установить элементы меню в корректный
цвет. Текущий элемент Current подсвечивается.
GetItemRect procedure GetIteRect(Item: PMenuItem; var R: TRect);
virtual; Перекрывается: Никогда
Перекрывает абстрактный метод в TMenuView. Возвращает
прямоугольник, занимаемый элементом меню в R. Используется
для определения, находится ли отметка мышки в данном
элементе меню.
См. так же: TMenuView.GetItemRect
Палитра
Полосы меню, как и все видимые элементы меню, используют
палитру по умолчанию CMenuView для отображения элементов
со 2 по 7 в палитру стандартной программы.
1 2 3 4 5 6
+====+====+====+====+====+====+
CMenuView | 2 | 3 | 4 | 5 | 6 | 7 |
+==+=+==+=+==+=+==+=+==+=+==+=+
Нормальный текст -+ | | | | +-- Короткий выбранный
Запрещенный текст -----+ | | +------ Запрещенный выбранный
Короткий текст -------------+ +------------ Нормальный выбранный
Назад | Содержание | Вперед