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




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


begin

if Edit then 

DeleteItem; {Удаляем старую запись}

Name := BName.Data;

Phone:= BPhone.Data;

Addr := BAddr.Data;

s[0] := chr(L) ;

FillChar(s [1] , L, ' ') ;

move (Name [1] ,s [1] ,Length (Name)) ;

move(Phone[1],s[succ(LName)],Length(Phone));

move(Addr[1],s[succ(LName+LPhone)],Length(Addr)

OldCount := PS. Count; {Прежнее количество записей} 

PS . Insert (NewStr (s) ) ; {Добавляем в коллекцию} 

{Проверяем добавление } 

if OldCount <> PS. Count then

Write (DataFile, Data) {Да - добавляем в файл} 

end

until Edit or (Control=cmCancel) ; 

Draw 

end; {AddItem}

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

Procedure SearchItem;

{Ищет нужный элемент}

Function UpString(s: String): String;

{Преобразует строку в верхний регистр}

var

k: Integer; 

begin

for k := 1 to Length(s) do 

if s[k] in ['a'..'z'] then

s[k] := chr(ord('A')+ord(s [k] ) -ord('a') ) 

else if s[k] in ['a'..'n'] then

s[k]:= chr(ord('A')+ord(s[k] )-ord('a') )

else if s[k] in ['p'..'я'] then

s[k] := chr(ord('P')+ord(s [k] ) -ord('p') )

UpString := s 

end; {UpString} 

var

InWin: PDialog; 

R: TRect; 

s: String; 

p: PInputLine; 

k: Word;

begin {SearchItem} 

R.Assign(15,8,65,16) ; 

InWin := New (PDialog, Init (R, 'Поиск записи:')) 

with InWin do 

begin

R.Assign(2,2,47,3) ; 

p := New (PInputLine,Init(R,50)); 

Insert (p) ; R.Assign(1,1,40,2) ; 

Insert (New (PLabel, Init(R,'Введите образец для поиска:',р))); 

R.Assign(10,5,20,7) ; 

Insert (New (PButton,Init(R,'Ввести',cmOk,bfDefault))); 

R.Assign(25,5,35,7) ;

Insert (New (PButton,Init (R,' Выход' ,cmCancel,bf Normal))); 

SelectNext (False) 

end; 

if DeskTop.ExecView(InWin) = cmCancel then

exit; s :=p.Data;

Location := 0;

while (UpString(s) >= UpString (PString(PS. At (Location))))

and (Location < pred(PS. Count) ) do 

inc (Location) ; 

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




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