Иллюстрированный самоучитель по Tirbo Pascal




Программа Notebook - часть 4


end; {DOSCall}

{---------------}

Constructor TInterior.Init; 

{Создает окно скрроллера} 

begin

TScroller.Init(Bounds, Hs, VS);

ReadFile;

GrowMode := gfGrowHiX+gfGrowHiY;

SetLimit(LLine, РS.Count) 

end;

{--------------}

Destructor TInterior. Done; 

begin

Dispose (PS, Done) ;

Inherited Done 

end ;

{--------------}

Procedure TInterior. ReadFile;

{Читает содержимое файла данных в массив LINES}

var

k: Integer; 

s: String; 

Data: DataType; 

f: text; 

begin

PS := New(PStringGollection, Init (100, 10) ); 

seek(DataFile,0) ;

while not (EOF(DataFile) or LowMemory) do 

begin

ReadfDataFile, data) ; 

with data do 

begin

s : = Name ;

while Length (s) < LName do

s : = s+ ' ' ; 

s := s+Phone; 

while Length (s) < LName+LPhone do

s : = s+ ' ' ; 

s := s+Addr 

end;

if so'' then PS. insert (NewStr (S) ) 

end;

Location := 0;

end; {ReadFile}

{-----------}

Procedure TInterior.Draw;

{ Выводит данные в окно просмотра}

var

n, {Текущая строка экрана}

k: Integer; {Текущая строка массива}

В: TDrawBuffer;

Color: Byte;

p: PString; 

begin

if Delta.Y>Location then

Location := Delta.Y; 

if Location>Delta.Y+pred(Size.Y) then

Location := Delta. Y+pred (Size. Y) ; 

for n := 0 to pred(Size.Y) do 

{Size. Y - количество строк окна} 

begin

k := Delta. Y+n; 

if k=Location then

Color := GetColor(2) 

else

Color := GetColor(1); 

MoveCharfB,' ', Color, Size. X) ; 

if k < pred(PS. count) then 

begin

p := PS.At(k) ;

MoveStr(B, Copy (р, Delta. X+1, Size. X) , Color) ; 

end;

WriteLine(0,N,Size.X,1,B) 

end 

end; {Tlnterior.Draw}

{---------------}

Function Control: Word;

{Получает команду из основного диалогового окна} 

const X = 1; 

L = 12; 

DX= 13;

But: array [0..4] of String [13] = {Надписи на кнопках:} 

('~l~ Выход ' , ' ~2~ Убрать ','~3~ Искать ','~4~ Изменить ','~5~ Добавить'); 




Содержание  Назад  Вперед