TTerminal TextView
+---------+ | TObject | +----+----+ +---+---+ | TView | +---+---+ +-----+-----+ | TScroller | +-----+-----+ +------+------+ | TTextDevice | +------+------+ +=====+=====+ | TTerminal | +===========+
TTerminal реализует "немой" терминал с буферизованным чтением и записью строк. По умолчанию - это циклический буфер размером 64К байт.
Поля
BufSize BufSize: Word; Только чтение Размер буфера терминала в байтах.
Buffer Buffer: PTerminalBuffer; Только чтение Указывает на первый байт буфера терминала.
QueFront QueFront: Word; Только чтение Смещение (в байтах) первого байта запомненного в буфере терминала.
QueBack QueBack: Word; Только чтение Смещение (в байтах) последнего байта, запомненного в буфере терминала.
Методы
Init constructor Init(var Bounds: TRect; AHScrollBar, AVScrollBar: PScrollBar; ABufSize: Word); Перекрывается: Иногда Создает объект TTerminal с данным Bounds, горизонтальной и вертикальной полосами скроллинга и буфером, вызывая TTextDevice.Init с аргументами Bounds и скроллерами, затем создает буфер (указываемый через Buffer) с BufSize равным ABufSize. GrowMode устанавливается в gfGrowHiX + gfGrowHiY. QueFront и QueBack инициализируются в 0, указывая на пустой буфер. Курсор выводится в начале видимого элемента (0, 0).
См. так же: TScroller.Init
Done destructor Done; virtual; Перекрывается: Иногда Освобождает буфер и вызывает TTextDevice.Done для освобождения объекта.
См. так же: TScroller.Done, TTextDevice.Done
BufDec procedure BufDec(var Val: Word); Используется для манипуляции смещением очереди с кольцевым переносом: если Val = 0, Val устанавливается в BufSize-1; иначе Val уменьшается.
См. так же: TTerminal.BufInc
BufInc procedure BufInc(var Val: Word); Используется для манипуляции смещением очереди с кольцевым переносом: увеличивает Val на 1, если Val >= BufSize, Val устанавливается в 0.
См. так же: TTerminal.BufDec
CalcWidth function CalcWidth: Integer; Возвращает длину самой длинной строки в текстовом буфере.
CanInsert function CanInsert(Amount: Word): Boolean: Возвращает True, если число байт, заданное в Amount, можно вставить в буфер без уничтожения верхней строки.
Draw procedure Draw; virtual; Перекрывается: Редко Вызывается когда скроллер TTerminal должен быть перерисован. Например, когда отмечена полоса скроллинга, когда изменен размер видимого элемента, когда изменены значения Delta или когда добавление текста приводит к скроллингу.
NextLine function NextLine(Pos: Word): Word; Возвращает смещение в буфере начала строки, которое следует за позицией Pos.
См. так же: TTerminal.PrevLines
PrevLines function PrevLines(Pos: Word; Lines: Word): Word; Перекрывается: Иногда Возвращает смещение в буфере начала строки, которое стоит перед позицией Pos.
StrRead function StrRead(var S: TextBuf) : Byte; virtual; Перекрывается: Иногда Абстрактный метод, возвращающий 0. Вы должны перекрыть его, если хотите, чтобы порожденный тип мог читать строки из текстового буфера.
StrWrite procedure StrWrite(var S:TextBuf; Count: Byte); virtual; Перекрывается: Редко Вставляет Count строк текста, заданного в S, в терминальный буфер. Этот метод управляет любым требуемым скроллингом, перерисовывая видимый элемент с помощью DrawView.
См. так же: TView.DrawView
QueEmpty function QueEmpty: Boolean; Возвращает True, если QueFront равна QueBack.
См. так же: TTerminal,QueFront, TTerminal.QueBack
Палитра
Теримальные объекты используют палитру по умолчанию CScroller для отображения элементов 6 и 7 в палитру стандартной программы.
1 2 +===+===+ CScroller | 6 | 7 | +=+=+=+=+ Нормальный ---+ +---- Подсвеченный