СПРАВОЧНИК ПО ОБЪЕКТАМ.
TScrollBar Views
+---------+
| TObject |
+----+----+
+---+---+
| TView |
+---+---+
+======+=====+
| TScrollBar |
+============+
Поля
Value Value : Integer; Только чтение
Поле Value представляет текущую позицию индикатора полосы
скроллинга. Этот маркер выделенный цветом, перемещается по
полосе скроллинга, указывая относительную позицию
(горизонтальную или вертикальную в зависимости от полосы
скроллинга) в тексте относительно всего текста, доступного
для скроллинга. Многие события могут прямо или косвенно
изменять Value такие, как отметки мышкой на
элементах полосы скроллинга, изменение размера окна или
изменение текста в скроллере. Аналогично изменения в Value
могут потребовать отображение в события. TScroolBar.Init
устанавливает Value в 0.
См. так же: TScrollBar.SetValue, TScrollBar.SetParams,
TScrollBar.ScrollDraw, TScroller.HandleEvent,
TScrollBar.Init
Min Min: Integer; Только чтение
Min представляет минимальное значение поля Value. По
умолчанию TScrollBar устанавливает Min в 0.
См. так же: TScrollBar.SetRange, TScrollBar.SetParams
Max Max: Integer; Только чтение
Max представляет максимальное значение поля Value. По
умолчанию TScrollBar устанавливает Max в 0.
См. так же: TScrollBar.SetRange, TScrollBar.SetParams
PgStep PgStep: Integer; Только чтение
PgStep - это количество добавляемое или вычитаемое из поля
Value полосы скроллинга, когда событие от мышки возникает
в любой части области страницы (sbPageLeft, sbPageRight,
sbPageUp, sbPageDown) или обнаруженные эквивалентные
клавиши (Ctrl-ц, Ctrl-ч, PgUp, PgDn). По умолчанию
TScrollBar.Init устанавливает PgStep в 1. PgStep может
изменяться при использовании TScrollBar.SetStep,
TScrollBar.SetParams и TScroller.SetLimit.
См. так же: TScrollBar.SetStep, TScrollBar.SetParams,
TScroller.SetLimit, TScrollBar.ScrollStep
ArStep ArStep: Integer; Только чтение
ArStep - это количество добавляемое или вычитаемое из поля
Value полосы скроллинга когда отмечена область стрелок
(sbLeftArrow, sbRightArrow, sbUpArrow, sbDownArrow) или
обнаружены эквивалентные нажатия клавиш. По умолчанию
TScrollBar,Init устанавливает ArStep в 1.
См. так же: TScrolBar.SetStep, TScrollBar.SetParam,
TScrollBarScrollStep
Методы
Init constructor Init(var Bounds: TRect);
Создает и инициализирует полосу скроллинга с границами
Bounds, вызывая TView.Init. Value, Max и Min
устанавливаются в 0. PgStep и ArStep устанавливаются в 1.
Формы элементов полосы скроллинга по умолчанию
устанавливаются в TScrollChars.
Если Bounds задает Size.X = 1, Вы получите вертикальную
полосу скроллинга, иначе - горизонтальную. Вертикальные
полосы скроллинга имеют поле GrowMode, установленное в
gfGrowLoX + gfGrowHiX + gfGrowHiY; вертикальные полосы
скроллинга имеют поле GrowMode, установленное gfGrowLoY +
gfGrouHiX + gfGrowHiY.
Load constructor Load(var S: TStream);
Создает и загружает полосу скроллинга из потока S, вызывая
TView.Load, затем читая 5 целочисленных полей через
S.Read.
См. так же: TScrollBar.Store
Draw procedure Draw; virtual; Перекрывается: Никогда
Рисует полосу скроллинга в зависимости от текущих Bounds,
Value и палитры.
См. так же: TScrollBar.ScrollDraw, TScrollBar.Value
GetPalette function GetPalette: PPalette; virtual;
Перекрывается: Иногда
Возвращает указатель на CScrollBar, палитру по умолчанию
для полосы скроллинга.
HandleEvent procedure HandleEvent(var Event: TEvent); virtual;
Перекрывается: Никогда
Обрабатывает события полосы скроллинга, вызывая
TView.HandleEvent, затем анализируя Event.What. События от
мышки - это общие сообщения владельцу полосы скроллинга
(см. функцию Message), которые должны обрабатываться
неявными изменениями полосы скроллинга, например скроллинг
текста. TScrollBar.HandleEvent так же определяет, какая
часть полосы скроллинга получила отметку от мышки (или
эквивалентную клавишу). Поле Value настраивается в
соответствии с текущими значениями ArStep и PgStep и
индикатор полосы скроллинга перерисовывается.
См. так же: TView.HandleEvent
ScrollDraw procedure ScrollDraw; virtual; Перекрывается: Редко
ScrollDraw вызывается при изменении поля Value. Этот
псевдоабстрактный метод вызывается передачей сообщения
cmScrollBarChanged владельцу полосы скроллинга:
Message(Owner, evBoadcast, cmScrollBarChanged, @Self);
См. так же: TScrollBar.Value, Message функция
ScrollStep function ScrollStep(Part: Integer): Integer; virtual;
Перекрывается: Никогда
По умолчанию ScrollStep возвращает положительное или
отрицательное значение шага в зависимости от части полосы
скроллинга, заданной в Part и текущих значений ArStep и
PgStep. Аргумент Part должен быть одной из констант sbXXXX
описанных в главе 14.
См. так же: TScrollBar.SetStep, TScrollBar.SetParams
SetParams procedure SetParams(AValue,AMin, AMax, APgStep, AArStep:
Integer);
SetParams устанавливает поля Value, Min, Max, PgStep и
ArStep в заданные значения. Если аргументы конфликтуют,
выполняются согласования. Например, Min не может быть
больше Max, поэтому если AMax < AMin, Max устанавливается
в Min. Value должно лежать в диапазоне [Min, Max],
поэтому, если Value < AMin, Value устанавливается в Min;
если AValue > AMax, Value устанавливается в Max. DrawView
перерисовывает полосу скроллинга. Если Value изменяется,
будет вызвана ScroolDraw.
См. так же: TView.DrawView, TScrollBar.ScrollDraw,
TScrollBar.SetRange, TScrollBar.SetValue
SetRange procedure SetRange(AMin, AMax: Integer);
SetRange задает допустимый диапазон для поля Value,
устанавливая Min и Max в AMin и AMax. SetRange вызывает
SetParams, поэтому DrawView и ScroolBar будут вызываться,
если изменения требуют перерисовки полосы скроллинга.
См. так же: TScrollBar.SetParams
SetStep procedure SetStep(APgStep, AArStep: Integer);
SetStep устанавливает поля PgStep и ASrStep в APgStep и
AArStep. Этот метод вызывает SetParams с остальными
аргументами, равными их текущим значениям.
См. так же: TScrollBar.SetParams, TScrollBar.ScrollStep
SetValue procedure SetValue(AValue: Integer);
SetValue устанавливает поле Value в AValue, вызывая
SetParams с остальными аргументами, установленными в их
текущие значения. DrawView и ScrollDraw вызываются, если
этот вызов изменяет значение Value.
См. так же: TScroll Bar.SetParams, TView.DrawView,
TScrollBar.ScrollDraw, TScroller.ScrollTo
Store procedure Store(var S:TStream);
Сохраняет объект TScrollBar в потоке S, вызывая
TView.Store, затем записывая 5 целочисленных полей в
поток, используя S.Write.
См. так же: TScrollBar.Load
Палитра
Объекты полосы скроллинга используют палитру по умолчанию
CScrollBar для отображения в 4 и 5-й элементы палитры
стандартной программы.
1 2 3
+===+===+===+
CScrollBar | 4 | 5 | 5 |
+=+=+=+=+=+=+
Страница ------+ | +----- Индикатор
Стрелки -----------+
TScroller Views
+---------+
| TObject |
+----+----+
+----+----+
| TView |
+----+----+
+=====+=====+
| TScroller |
+=====+=====+
+------+------+
| TTextDevice |
+------+------+
+-----+-----+
| TTerminal |
+-----------+
Поля
HScrollBar HScrollBar:PScrollBar; Только чтение
Указывает на горизонтальную полосу скроллинга, связанную с
этим скроллером. Если такой полосы скроллинга нет,
HScroolBar равен nil.
VScrollBar VScrollBar: PScrollBar; Только чтение
Указывает на вертикальную полосу скроллинга, связанную с
этим скроллером. Если такой полосы скроллинга нет,
VScroolBar равен nil.
Delta Delta: TPoint; Только чтение
Содержит Х (горизонтальная) и Y (вертикальная) компоненты
позиции скроллера относительно вирутального видимого
элемента. Автоматический скроллинг достигается изменением
одной или обоих компонент в ответ, например, на события
полосы скроллинга, изменяющих значения поля Value. Ручной
скроллинг изменяет Delta, отображает изменения в поле
Value полосы скроллинга и приводит к обновлению
индикаторов полосы скроллинга.
См. так же: TScroller.ScrollDraw, TScroller.ScrollTo
Limit Limit: TPoint; Только чтение
Limit.X Limit.Y - это максимально допустимые значения для
Delta.X и Delta.Y.
См. так же: TScroller.Delta
Методы
Init constructor Init(var Bounds: TRect; AHScrollBar,
AVScrollBar: PScrollBar);
Создает и инициализирует объект TScroller с заданным
размером и полосами скроллинга. Вызывает TView.Init для
установки размера видимого элемента. Options
устанавливается в ofSelectabble, а EventMask
устанавливается в evBroadcast. AHScrollBar должен быть
nil, если Вы не хотите горизонтальную полосу скроллинга;
аналогично AVScrollBar должен быть nil, если Вы не хотите
вертикальной полосы скроллинга.
См. так же: TView.Init, TView.Options, TView.EventMask
Load constructor Load(var S: TStream);
Загружает видимый элемент скроллера из потока S, вызывая
TView.Load, затем восстанавливает указатели на полосы
скроллинга, используя GetPeerViewPtr и читает поля Delta и
Limit, используя S.Read.
См. так же: TScroller.Store
ChangeBounds procedure ChangeBounds(var Bounds: TRect); virtual;
Перекрывается: Никогда
Изменяет размер скроллера, вызывая SetBounds. Если
необходимо, скроллер и полосы скроллинга перерисовываются
вызовом DrawView и SetLimit.
См. так же: TView.SetBounds, TView.DrawView,
TScroller.SetLimit
GetPalette function GetPalette: PPalette; virtual;
Перекрывается: Иногда
Возвращает указатель на палитру скроллера по умолчанию
CScroller.
HandleEvent procedure HandleEvent(var Event: TEvent); virtual;
Перекрывается: Редко
Обрабатывает большинство событий, вызывая
TView.HandleEvent. Общие события с командой
cmScrollBarChanged, если они пришли от HScrollBar или
VScrollBar, приводят к вызову TScroller.ScrollDraw.
См. так же: TView.HandleEvent, TScroller.ScrollDraw
ScrollDraw procedure ScrollDraw; virtual; Перекрывается: Никогда
Проверяет, соответствует ли Delta соответствующим позициям
полос скроллинга. Если нет - Delta устанавливается в
корректное значение и вызывается DrawView для перерисовки
скроллера.
См. так же: TView.DrawView, TScroller.Delta,
TScroller.HscrollBar, TScroller.VScrollBar
ScrollTo procedure ScrollTo(X, Y: Integer);
Устанавливает полосы скроллинга в (X, Y), вызывая
HScrollBar^.SetValue(X) и VScrollBar^.SetValue(Y) и
перерисовывает видимый элемент, вызывая DrawView.
См. так же: TView.DrawView, TScroller.SetValue
SetLimit procedure SetLimit(X, Y: Integer);
Устанавливает Limit.X в X и Limit.Y в Y, затем вызывает
HScrollBar^.SetParams и VScrollVar^.SetParams (если эти
полосы скроллинга существуют), чтобы настроить их поля
Max. Эти вызовы могут привести к перерисовке полосы
скроллинга. Наконец вызывается DrawView для перерисовки
скроллера, если это необходимо.
См. так же: TScroller.Limit, TScroller.HScroller,
TScroller.VScrollBar, TScrollBar.SetParams
SetState procedure SetState(AState: Word; Enable: Boolean);
virtual; Перекрывается: Редко
Этот метод вызывается при изменении состояния скроллера.
Вызов TView.SetState устанавливает или очищает флаги
состояния в State. Если новое состояние - sfSelected и
sfActive, SetState отображает полосы скроллинга, иначе они
скрываются.
Store procedure Store(var S: TStream);
Записывает скроллер в поток S, вызывая TView.Store, затем
сохраняет ссылки на полосы скроллинга, используя
PutPeerViewPtr, наконец записывает значения Delta и Limit,
используя S.Write.
См. так же: TScroller.Load, TStream.Write
Палитра
Объекты скроллера используют палитру по умолчанию
CScroller для отображения в 6 и 7 элементы палитры
стандартной программы.
1 2
+===+===+
CScroller | 6 | 7 |
+=+=+=+=+
Нормальный ---+ +---- Подсвеченный
TSortedCollection Objects
+---------+
| TObject |
+----+----+
+------+------+
| TCollection |
+------+------+
+========+==========+
| TSortedCollection |
+========+==========+
+--------+----------+
| TStringCollection |
+--------+----------+
+---------+-----------+
| TResourceCollection |
+---------------------+
TSortedCollection порожден от TCollection и реализует
коллекцию, отсортированную по ключу без дублирования.
Сортировка производится методом TStringCollection.Compare,
который Вы перекрываете, чтобы задать свое определение
упорядочивания элементов. Когда новые элементы
добавляются, они автоматически втавляются в порядке,
заданном методом Compare. Элементы будут располагаться,
используя двоичный метод поиска TStringCollection.Search.
Виртуальный метод KeyOf, возвращающий указатель для
Compare, так же может быть перекрыт, если Compare требует
дополнительной информации.
Методы
Compare function Compare(Key1, Key2: Pointer): Integer; virtual;
Перекрывается: Всегда
Compare - это абстрактный метод, который должен быть
перекрыт во всех порожденных типах. Compare должен
сравнивать 2 ключевых значения и возвращать результат:
--------------------------------------------
-1 if Key1 < Key2
0 if Key1 = Key2
1 if Key1 > Key2
--------------------------------------------
Key1 и Key2 - это значения указателей, извлеченных из
соответствующей коллеции элементов методом
TSortedCollection.KeyOf. Метод TSortedCollection.Search
реализует двоичный поиск элементов коллекции, используя
Compare для сравнения элементов.
См. так же: TSortedCollection.KeyOf,
TSortedCollection.Compare
IndexOf function IndexOf(Item: Pointer): Integer; virtual;
Перекрывается: Никогда
Использует TSortedCollection.Search для нахождения индекса
элемента Item. Если элемент не в коллекции, IndexOf
возвращает -1. Реализация TSortedCollection.IndexOf:
if Search(KeyOf(Item), I) then IndexOf := I
else IndexOf := -1;
См. так же: TSortedCollection.Search
Insert procedure Insert(Item: Pointer); virtual;
Перекрывается: Никогда
Если элемент не найден в коллекции, он вставляется в
позицию, определенную индексом, вызывает
TSortedCollection.Search для определения, существует ли
элемент. Если нет, куда вставить его. Реализация
TSortedCollection.Insert:
if nоt Search(KeyOf(Item), I) then AtInsert(I, Item)
См. так же: TSortedCollection.Search
KeyOf function KeyOf(Item: Pointer): Pointer; virtual;
Перекрывается: Иногда
Для данного элемента коллекции KeyOf возвращает
соответствующий ключ элемента. По умолчанию
TSortedCollection.KeyOf просто возвращает Item. KeyOf
перекрывается в случае, когда ключ элемента не совпадает с
элементом.
См. так же: TSortedCollection.IndexOf
Search function Search(Key: Pointer; var Index: Integer): Boolean;
virtual; Перекрывается: Редко
Возвращает True, если элемент, заданный ключем Key, не
найден в отсортированной коллекции. Если элемент найден,
Index устанавливается в найденный индекс; иначе Index
устанавливается в индекс, куда будет помещаться элемент
при вставке.
См. так же: TSortedCollection.Compare,
TSortedCollection.Insert
TStaticText Dialogs
+---------+
| TObject |
+----+----+
+---+---+
| TView |
+---+---+
+======+======+
| TStaticText |
+======+======+
+---+----+
| TLabel |
+--------+
Объекты TStaticText представляют простейшие видимые
элементы: они содержат фиксированный текст и игнорируют
все события, переданные им. Они используются как сообщения
или пассивные метки. Наследники TStaticText выполняют
более активную роль.
Поля
Text Text: PString; Только чтение
Указатель на строку текста, отображаемую в видимом
элементе.
Методы
Init constructor Init(var Bounds: TRect; AText: String);
Создает объект StaticText заданного размера, вызывая
TView.Init, затем устанавливая текст в NewStr(AText).
См. так же: TView.Init
Load constructor Load(varS: TStream);
Создает и инициализирует объект TStaticText из данного
потока. Вызывает TView.Load и устанавливает текст с
помощью S.ReadStr. Используется совместно с
TStaticText.Store для сохранения и чтения статического
текстового видимого элемента из потока.
См. так же: TViewLoad, TStaticText.Store, TStream.ReadStr
Done destructor Done; virtual; Перекрывается: Редко
Освобождает строку Text, затем вызывает TView.Done для
разрушения объекта.
Draw procedure Draw; virtual; Перекрывается: Редко
Рисует строку текста внутри видимого элемента, слово при
необходимости переносится. Ctrl-M в тексте указывает на
начало новой строки. Если строка начинается с Ctrl-C, она
центрируется в видимом элементе.
GetPalette function GetPalette: PPalette; virtual;
Перекрывается: Иногда
Возвращает указатель на палитру по умолчанию CStaticText.
GetText procedure GetText(varS: String); virtual;
Перекрывается: Иногда
Возвращает в S строку, на которую указывает Text.
Store procedure TStaticText.Store(var S: TStream);
Сохраняет объект TStaticText в потоке, вызывая TView.Store
и S.WriteStr. Используется совместно с TStaticText.Store
для сохранения и чтения статического текстового видимого
элемента из потока.
См. так же: TStaticText.Load, TView.Store, TStream.WriteStr
Палитра
Статический текст использует палитру по умолчанию
CStaticText для отображения в 6-й элемент палитры
стандартного диалога.
1
+===+
CStaticText | 6 |
+=+=+
Цвет текста ---+
TStatusLine Menus
+---------+
| TObject |
+----+----+
+----+----+
| TView |
+----+----+
+======+======+
| TStatusLine |
+=============+
Объект TStatusLine - это видимый элемент, обычно
отображаемый внизу экрана. Типичная строка статуса
отображает список доступных горячих клавиш, свободную
память, время дня, текущий режим редактирования и
подсказки пользователя. Отображаемые элементы
устанавливаются в связанный список, используя
InitStatusLine в TApplication и отображаемый элемент
зависит от контекста подсказки текущего видимого элемента.
Как и полоса меню и панель экрана, строка статуса обычно
принадлежит группе TApplication.
Элементы строки статуса - это записи типа TStatusItem,
которые содержат поля для текстовой строки, отображаемой в
строке статуса, кода ключа, связываемого с горячей
клавишей (обычно функциональная клавиша или комбинация Alt
-клавиша) и команды, генерируемой, если отображаемый текст
отмечен мышкой или нажата горячая клавиша.
Строка статуса отображает контекстно-ориентированную
подсказку. Каждый объект строки статуса содержит связанный
список строк статуса Defs (типа TStatusDef), которые
определяют диапазон контекстных подсказок и список
элементов статуса, отображаемый, когда текущий контекст
подсказки находится в этом диапазоне. Кроме того, может
отображаться предопределенная строка в соответствии с
текущим контекстом подсказки.
Поля
Items Items: PStatusItem; Только чтение
Указатель на текущий связанный список записей типа
TStatusItem.
См. так же: TStatusItem
Defs Defs: PStatusDef; Только чтение
Указатель на текущий связанный список записей типа
TStatusDef. Список для использования определяется текущим
контекстом подсказки.
См. так же: TStatusDef, TStatusLine.Update,
TStatusLine.Hint
Методы
Init constructor Init(var Bounds: TRect; ADefs: PStatusDef);
Создает объект TStatusLine с размером Bounds, вызывая
TView.Init. Бит ofPreProcess в Options устанавливается,
EventMask устанавливается, включая evBroadcast и GrowMode
устанавливается в gfGrowLoY + gfGrowHiX + gfGrowHiY. Поле
Defs устанавливается в ADefs. Если ADefs - nil, Items
устанавливается в nil, иначе Items устанавливается в
ADefs^.Items.
См. так же: TView.Init
Load constructor Load(var S: TStream);
Создает объект TStatusLine и загружает его из потока S,
вызывая TView.Load, затем читая Defs и Items из потока.
См. так же: TView.Load, TStatusLine.Store
Done destructor Done; virtual; Перекрывается: Никогда
Освобождает все Items и Defs в объекте TStatusLine, затем
вызывает TView.Done.
См. так же: TView.Done
Draw procedure Draw; virtual; Перекрывается: Редко
Рисует строку статуса, выводя строку Text для каждого
элемента статуса, затем все подсказки, определенные для
данного текущего контекста подсказки за полосой
разделителя.
См. так же: TStatusLine.Hint
GetPalette function GetPalette: PPalette; virtual;
Перекрывается: Иногда
Возвращает указатель на палитру по умолчанию CStatusLine.
HandleEvent procedure HandleEvent(var Event: TEvent); virtual;
Перекрывается: Редко
Обрабатывает события, передаваемые строке статуса, вызывая
TView.HandleEvent, затем проверяет на 3 вида специальных
событий. Отметки мышкой, которые попадают внутрь
прямоугольника, занимаемого элементом статуса, генерируют
командное событие с Event.What, установленного в Command,
для этого элемента статуса. События от клавиатуры
сравниваются с полем KeyCode каждого элемента;
соответствие вызывает командное событие с Command этого
элемента. Общие события с командой cmCommand, SetChanged
заставляют строку статуса перерисовывать себя, чтобы
отразить любые горячие клавиши, которые могут быть
разрешены или запрещены.
См. так же: TView.HandleEvent
Hint function Hint(AHelpCtx: Word): String; virtual;
Перекрывается: Часто
Этот псевдоабстрактный метод возвращает пустую строку. Он
должен быть перекрыт для обеспечения строки
контекстно-ориентированной подсказки для аргумента
AHelpCtx. Непустая строка будет рисоваться в строке
статуса после полосы разделителя.
См. так же: TStatusLine.Draw
Store procedure Store(var S: TStream);
Сохраняет объект TStatusLine в потоке S, вызывая
TView.Store, затем записывая все определения статуса и их
ассоциированные списки элементов в поток. Сохраненный
объект может быть восстановлен используя TStatusLine.Load.
См. так же: TView.Store, TStatusLine.Load
Update procedure Update;
Выбирает корректный Items из списка Defs. В зависимости от
текущего контекста подсказки, затем вызывает DrawView для
перерисовки строки статуса, если элементы были изменены.
См. так же: TStatusLine.Defs
Палитра
Строки статуса используют палитру по умолчанию CStatusLine
для отображения в элементы со 2 по 7-й в палитре
стандартной программы.
1 2 3 4 5 6
+====+====+====+====+====+====+
CStatusLine | 2 | 3 | 4 | 5 | 6 | 7 |
+==+=+==+=+==+=+==+=+==+=+==+=+
Нормальный текст -+ | | | | +-- Выбранный короткий
Запрещенный текст -----+ | | +------ Выбранный запрещенный
Короткий текст -------------+ +------------ Выбранный нормальный
TStream Objects
+-----------+
| TObject |
+-----+-----+
+====+====+
| TStream |
+==+===+==+
+-------+ +------+
+----+-------+ +-----+------+
| TDosStream | | TEmsStream |
+----+-------+ +------------+
+----+-------+
| TBufStream |
+------------+
TStream - это общий абстрактный обект, обеспечивающий
полиморфический В/В в и/из устройства памяти. Вы можете
создать порожденный объект потока, перекрывая виртуальные
методы GetPos, GetSize, Read, Seek, Truncate и Write.
Turbo Vision делает это в порожденных потоках TDosStream и
TEmsStream. Для порожденного буферизованного потока Вы
должны так же перекрыть TStream.Flush.
Поля
Status Status: Integer; Чтение/Запись
Указывает текущий статус потока:
Таблица 13.1. Коды ошибок потока.
-------------------------------------------------
Коды ошибок TStream
-------------------------------------------------
stOk Нет ошибок
stError Ошибка доступа
stInitError Нельзя инициализироввать поток
stReadError Чтение за концом файла
stWriteError Нельзя расширить поток
stGetError Get для незарегистрированного типа
stPutError Put для незарегистрированного типа
-------------------------------------------------
Если Status <> stOK, все операции над потоком будут
запрещены до тех пор, пока не будет вызван Reset.
ErrorInfo ErrorInfo: Integer; Чтение/Запись
Содержит дополнительнительную информацию когда Status не
stOK. Для значений Status: stError, stInitError,
stReadError, stWriteError, ErrorInfo содержит код ошибки
DOS или EMS, если такой существует. Когда Status
stGetError, ErrorInfo содержит IDE типа объекта (поле
ObjType в TStreamRec) не зарегистрированного типа объекта.
Когда Status - stPutError, ErrorInfo содержит смещение VMT
в сегменте данных (поле VmtLink в TStreamRec) не
зарегистрированного типа объекта.
Методы
CopyFrom procedure CopyFrom(var S: TStream; Count: Longint);
Копирует Count байт из потока S в вызывающий поток.
Например:
NewStream := New(TEmsStream, Init(OldStream^.GetSize));
OldStream^.Seek(0);
NewStream^.CopyFrom(OldStream, OldStream^.GetSize);
См. так же: TStream.GetSize, TObject.Init
Error procedure Error(Code, Info: Integer); virtual;
Перекрывается: Иногда
Вызывается, если возникла ошибка потока. По умолчанию
TStream.Error сохраняет Code и Info в полях Status и
ErrorInfo. Затем, если глобальная переменная StreamError
не nil, вызывает процедуру, заданную в StreamError. После
возникновения ошибки, все операции над потоком запрещены
до тех пор, пока не будет вызван Reset.
См. так же: TStream.Reset, StreamError переменная
Flush procedure Flush; virtual; Перекрывается: Иногда
Абстрактный метод, который должен быть перекрыт, если Ваш
порожденный тип реализует буфер. Этот метод может
выталкивать любые буфера, очищая буфер чтения и записывая
буфер вывода. По умолчанию TStream.Flush ничего не делает.
См. так же: TDosStream.Flush
Get function Get: PObject;
Читает объект из потока. Объект должен быть предварительно
записан в поток через TStream.Put. Get вначале читает ID
типа объекта (слово) из потока. Затем он находит
соответствующий тип объекта, сравнивая ID с полем ObjType
всех зарегистрированных типов объектов (см. тип
TStreamRec). Наконец вызывает констрактор Load этого типа
объекта для создания и загрузки объекта. Если ID типа
объекта, считанного из потока, равен 0, Get возвращает
указатель nil; если ID типа объекта не зарегистрирован
(используя RegisterType) Get вызывает TStream.Error и
возвращает указатель nil; иначе Get возвращает указатель
на вновь созданный объект.
См. так же: TStream.Put, RegisterType, TStreamRec, Load
методы
GetPos function GetPos: Longint; virtual; Перекрывается: Всегда
Возвращает текущую позицию в потоке. Этот абстрактный
метод должен всегда перекрываться.
См. так же: TStream.Seek
GetSize function GetSize: Longint; virtual; Перекрывается: Всегда
Возвращает размер потока. Это абстрактный метод и должен
перекрываться.
Put procedure Put(P: PObject);
Записывает объект в поток. Объект позже можно считать из
потока, используя TStream.Get. Put вначале находит
регистрационную запись типа этого объекта, сравнивая
смещение VMT объекта с полем VmtLink всех
зарегистрированных типов объектов (см. тип TStreamRec).
Затем записывает ID типа объекта (поле ObjType
регистрационной записи) в поток, и наконец вызывает метод
Store этого типа объекта для записи объекта. Если аргумент
Р, переданный в Put - nil, Put записывает в поток слово,
содержащее 0. Если тип объекта в Р не зарегистрирован
(испольуя RegisterType), Put вызывает TStream.Error и
ничего не пишет в поток.
См. так же: TStream.Get, RegisterType, TStreamRec, Store
методы
Read procedure Read(var Buf; Count: Word); virtual;
Перекрывается: Всегда
Это абстрактный метод и должен перекрываться во всех
порожденных типах. Read должен читать Count байт из потока
в Buf и перемещать текущую позицию потока на Count байт.
Если произошла ошибка, Read должен вызывать Error и
заполнять Buf Count байтами, равными 0.
См. так же: TStream,Write, TStream.Error
ReadStr function ReadStr: PString;
Читает строку из текущей позиции потока, возвращая
указатель PString. TStream.ReadStr вызывает GetMem для
распределения (Length+1) байт для строки.
См. так же: TStream.WriteStr
Reset procedure Reset;
Сбрасывает ошибочное условие потока, устанавливая Status и
ErrorInfo в 0. Этот метод позволяет Вам продолжать
обработку потока после ошибочной ситуации, которую Вы
скорректировали.
См. так же: TStream.Status, TStream.ErrorInfo, sfXXXX коды
ошибок
Seek procedure Seek(Pos: Longint); virtual; Перекрывается: Всегда
Это абстрактный метод и должен перекрываться во всех
потомках. TStream.Seek устанавливает текущую позицию в Pos
байт, начиная от начала потока. Начало потока - позиция 0.
См. так же: TStream.GetPos
Truncate procedure Truncate; virtual; Перекрывается: Всегда
Это абстрактный метод и должен перекрываться во всех
потомках. TStream.Truncate удаляет все данные в потоке от
текущей позиции до конца.
См. так же: TStream.GetPos, TStream.Seek
Write procedure Write(var Buf; Count: Word); virtual;
Перекрывается: Всегда
Это абстрактный метод и должен перекрываться во всех
потомках. Write записывает Count байт из Buf в поток и
перемещает текущую позицию потока на Count байт. Если
возникла ошибка, Write должен вызывать Error.
См. так же: TStream.Read, TStream.Error
WriteStr procedure WriteStr(P: PString);
Записывает строку P^ в поток, начиная с текущей позиции.
См. так же: TStream.ReadStr
TStringCollection Objects
+---------+
| TObject |
+----+----+
+------+------+
| TCollection |
+------+------+
+--------+----------+
| TSortedCollection |
+--------+----------+
+========+==========+
| TStringCollection |
+========+==========+
+---------+-----------+
| TResourceCollection |
+---------------------+
TStringCollection порожден от TSortedCollection и
реализует сортированный список ASCII строк. Метод
TStringCollection.Compare перекрывается для задания
обычного лексикографического упорядочения строк ASCII. Вы
можете перекрыть Compare для задания другого упорядочения,
такого как для неанглийских наборов символов.
Методы
Compare function Compare(Key1, Key2: Pointer): Integer; virtual;
Перекрывается: Иногда
Сравнивает строки Key1^ и Key2^ : возвращает -1, если Key1
< Key2; 0, если Key1 = Key2 и +1, если Key1 > Key2.
См. так же: nTStringCollection.Search
FreeItem procedure FreeItem(Item: Pointer); virtual;
Перекрывается: Редко
Удаляет строку Item^ из отсортированной коллекции и
освобождает строку.
GetItem function GetItem(var S: TStream): Pointer; virtual;
Перекрывается: Редко
По умолчанию читает строку из TStream, вызывая SReadStr.
См. так же: TStream.ReadStr
PutItem procedure PutItem(var S: TStream; Item: Pointer);
virtual; Перекрывается: Редко
По умолчанию записывает строку Item^ в TStream, вызывая S.
WriteStr.
См. так же: TStream.WriteStr
TStringList Objects
+-----------+
| TObject |
+---+---+---+
+------+ +------+
+======+======+ +------+--------+
| TStringList | | TStrListMaker |
+=============+ +---------------+
TStringList предоставляет механизм для доступа к строкам,
хранящимся в потоке. Каждая строка, хранящаяся в списке
строк идентифицируется уникальным номером (ключем) между 0
и 65,535. Списки строк занимают меньше памяти, чем обычные
строки, поскольку строки хранятся в потоке, а не в памяти.
Кроме того, списки строк легко решают проблему настройки
программ на языки, поскольку строки не "встроены" в
программу.
TStringList имеет методы только для доступа к строкам; для
создания списка строк Вы должны использовать
TStrListMaker.
Заметим, что TStringList и TStrListMaker имеют один ID
типа объекта (поле ObjType в TStreamRec) и следовательно,
не могут регистрироваться и использоваться одновременно в
одной программе.
Методы
Load constructor Load(var S:TStream);
Загружает индекс списка строк из потока S и хранит ссылку
на S так, что TStringLis.Get может обращаться к потоку при
чтении строк.
Считая, что TStringList был зарегистрирован, используя
RegisterType(RStringList), здесь показано, как считать
список строк (созданный с использованием TStrListMaker и
TResourseFile.Put) из файла ресурса:
ResFile.Init(New(TBufStream, Init('MYAPP.RES', stOpenRead,
1024)));
Strings := PStringList(ResFile.Get('Strings'));
См. так же: TStrListMaker.Init, TStringList.Get
Done destructor Done; virtual; Перекрывается: Никогда
Освобождает память, распределенную под список строк.
См. так же: TStrListMaker.Init, TStringList.Done
Get function Get(Key: Word): String;
Возвращает строку, заданную через Key, или пустую строку,
если нет строки с данным Key. Например:
P := @FileName;
FormatStr(S, Strings^.Get(sLoadingFile), P);
См. так же: TStringListMaker.Put
TStrListMaker Objects
+-----------+
| TObject |
+---+---+---+
+--------+ +------+
+======+========+ +------+------+
| TStrListMaker | | TStringList |
+===============+ +-------------+
TStrListMaker - это простой тип объекта, используемый для
создания списка строк, который используют с TStringList.
Следующий фрагмент кода показывает как создавать и
сохранять список строк в файле ресурса.
const
sInformation = 100;
sWarning = 101;
sError = 102;
sLoadingFile = 200;
sSavingFile = 201;
var
ResFile: TResourceFile;
S: TStrListMaker;
begin
RegisterType(RStrListMaker);
ResFile.Init(New(TBufStream, Init('MYAPP.RES', stCreate,
1024)));
S.Init(16384, 256);
S.Put(sInformation, 'Information');
S.Put(sWarning, 'Warning');
S.Put(sError, 'Error');
S.Put(sLoadingFile, 'Loading file #s.');
S.Put(sSavingFile, 'Saving file #s.');
ResFile.Put(@S,'Strings');
S.Done;
ResFile.Done;
end;
Методы
Init constructor Init(AStrSize, AIndexSize: Word);
Создает в памяти список строк размера AStrSize с индексом
из AIndexSize элементов. Буфер строк и буфер индексов
заданного размера распределяются в куче.
AStrSize должен быть достаточно велик для хранения всех
строк, добавляемых в список строк - каждая строка занимает
свою длину плюс 1 байт.
При добавлении строк в список строк (используя
TStrListMaker.Put) строится индекс строк. Строки с
последовательными ключами (такими как sInformation,
sWarning и sError в предыдущем примере) записываются в
одну индексную запись до 16. AIndexSize должен быть
достаточно большим для добавления всех сгенерированных
индексных записей. Каждый элемент индекса занимает 6 байт.
См. так же: TStringList.Load, TStrListMaker.Done
Done destructor Done; virtual;
Освобождает память, распределенную этим объектом.
См. так же: TStrListMaker.Init
Put procedure Put(Key: Word; S: String);
Добавляет String к списку строк (с заданным числовым Key).
Store procedure Store(var S: TStream);
Записывает список строк в поток.
Назад | Содержание | Вперед