+---------+ | 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, можно вставить в буфер без уничтожения верхней строки.