Скачиваний:
126
Добавлен:
08.05.2014
Размер:
7.14 Кб
Скачать
Program laba7;
uses App, Objects, Menus, Drivers, Views, Dialogs, MsgBox;
type
TMyApp = object (TApplication)
procedure HandleEvent(var Event: TEvent); virtual;
procedure InitStatusLine; virtual;
procedure InitMenuBar; virtual;
function MakeDialog1 : PDialog; virtual;
function MakeDialog2 : PDialog; virtual;
function MakeDialog3(nomer : integer) : PDIalog; virtual;
end;
type
Data = record
shop : string [11];
typecp : string[7];
freq : string [3];
ozu : string[4];
ngmd : string[4];
gmd : string[2];
monitor : string[5];
cena : integer;
end;

const
cm0 = 200;
cm1 = 201;
cm2 = 202;
var
MyApp : TMyApp;
base : array [1..10] of data;
f : text;
i : integer;

function TMyApp.MakeDialog1 : PDialog;
var
Dlg : PDialog;
R : TRect;
B : PView;
begin
R.Assign(30,5,50,15);
New(Dlg, Init(R, '’ЁЇ –Џ'));
with Dlg^ do
begin
R.Assign(2,3,18,6);
B := New (PRadioButtons, Init (R,
NewSItem('286',
NewSItem('386SX',
NewSItem('486SX', nil)))));
Insert(B);
R.Assign(2,2,18,3);
Insert(New(PLabel,Init(R, '’ЁЇ Їа®жҐбб®а ', B)));
R.Assign(5,7,15,9);
Insert(New(PButton, Init(R, '~O~k',
cmOK, bfDefault)));
end;
SelectNext(False);
MakeDialog1 := Dlg;
end;

function TMyApp.MakeDialog2 : PDialog;
var
Dlg : PDialog;
R : TRect;
B : PView;
begin
R.Assign(30,5,50,18);
New(Dlg, Init(R, 'ЋЎкҐ¬ Ќ†Њ„'));
with Dlg^ do
begin
R.Assign(2,3,18,9);
B := New (PRadioButtons, Init (R,
NewSItem('40 ЊЃ ©в',
NewSItem('89 ЊЃ ©в',
NewSItem('120 ЊЃ ©в',
NewSItem('240 ЊЃ ©в',
NewSItem('340 ЊЃ ©в',
NewSItem('520 ЊЃ ©в',
nil))))))));
Insert(B);
R.Assign(2,2,18,3);
Insert(New(PLabel,Init(R, 'ЋЎкҐ¬ ¤ЁбЄ ', B)));
R.Assign(5,10,15,12);
Insert(New(PButton, Init(R, '~O~k',
cmOK, bfDefault)));
end;
SelectNext(False);
MakeDialog2 := Dlg;
end;

function TMyApp.MakeDialog3 (nomer:integer) : PDialog;
var
Dlg : PDialog;
R : TRect;
B : PView;
a : string;
begin
R.Assign(20,5,60,19);
New(Dlg, Init(R, '‘ ¬л© ¤ҐиҐўл© Є®¬ЇмовҐа'));
with Dlg^ do
begin
R.Assign(2,2,20,3);
Insert(New(PLabel,Init(R, '”Ёа¬ : ', B)));
R.Assign(20,2,30,3);
Insert(New(PLabel, Init(R, base[nomer].shop, B)));
R.Assign(2,3,20,4);
Insert(New(PLabel, Init(R, '’ЁЇ –Џ: ', B)));
R.Assign(20,3,30,4);
Insert(New(PLabel, Init(R, base[nomer].typecp, B)));
R.Assign(2,4,20,5);
Insert(New(PLabel, Init(R, '— бв®в  –Џ: ', B)));
R.Assign(20,4,30,5);
Insert(New(PLabel, Init(R, base[nomer].freq, B)));
R.Assign(2,5,20,6);
Insert(New(PLabel, Init(R, 'ЋЎкҐ¬ Ћ‡“: ', B)));
R.Assign(20,5,30,6);
Insert(New(PLabel, Init(R, base[nomer].ozu, B)));
R.Assign(2,6,20,7);
Insert(New(PLabel, Init(R, 'ЋЎкҐ¬ Ќ†Њ„: ', B)));
R.Assign(20,6,30,7);
Insert(New(PLabel, Init(R, base[nomer].ngmd, B)));
R.Assign(2,7,20,8);
Insert(New(PLabel, Init(R, 'Љ®«-ў® ѓЊ„: ', B)));
R.Assign(20,7,30,8);
Insert(New(PLabel, Init(R, base[nomer].gmd, B)));
R.Assign(2,8,20,9);
Insert(New(PLabel, Init(R, 'Њ®­Ёв®а: ', B)));
R.Assign(20,8,30,9);
Insert(New(PLabel, Init(R, base[nomer].monitor, B)));
R.Assign(2,9,20,10);
str(base[nomer].cena, a);
Insert(New(PLabel, Init(R, '–Ґ­ : ', B)));
R.Assign(20,9,30,10);
Insert(New(PLabel, Init(R, a, B)));
R.Assign(15,11,25,13);
Insert(New(PButton, Init(R, '~O~k',
cmCancel, bfDefault)));
end;
SelectNext(False);
MakeDialog3 := Dlg;
end;
procedure TMyApp.HandleEvent(var Event : TEvent);
var Selection : word;
temp : string;
oldcena : integer;
numer : integer;
begin
inherited HandleEvent(Event);
if Event.What <> evCommand then exit;
case Event.Command of
cm0 : begin
Selection := 0;
if ExecuteDialog(MakeDialog1, @Selection) <> cmOk
then begin ClearEvent(Event); exit; end;
case Selection of
0: temp := '286 ';
1: temp := '386 SX ';
2: temp := '486 SX ';
end;
oldcena := 30000;
for i:=1 to 10 do begin
with base[i] do begin
if (typecp = temp) and (cena < oldcena) then begin
oldcena := cena;
numer := i;
end;
end;
end;
ExecuteDialog(MakeDialog3(numer),@Selection);
ClearEvent(Event);
end;
cm1 : begin
Selection := 0;
if ExecuteDialog(MakeDialog2, @Selection) <> cmOk
then begin ClearEvent(Event); exit; end;
case Selection of
0: temp := '40 ';
1: temp := '89 ';
2: temp := '120 ';
3: temp := '240 ';
4: temp := '340 ';
5: temp := '520 ';
end;
oldcena := 30000;
for i:=1 to 10 do begin
with base[i] do begin
if (ngmd = temp) and (cena < oldcena) then begin
oldcena := cena;
numer := i;
end;
end;
end;
ExecuteDialog(MakeDialog3(numer),@Selection);
ClearEvent(Event);
end;
end;
end;
procedure TMyApp.InitStatusLine;
var
R: TRect;
begin
GetExtent(R);
R.A.Y := R.B.Y - 1;
New(StatusLine, Init (R,
NewStatusDef(0, $EFFF,
NewStatusKey('~Alt-X~ ‚л室', kbAltX, cmQuit,
NewStatusKey('~F10~ ЊҐ­о', kbF10, cmMenu,
nil)),
nil)));
end;
procedure TMyApp.InitMenuBar;
var
R : TRect;
begin
GetExtent(R);
R.B.Y := R.A.Y + 1;
MenuBar := New (PMenuBar, Init(R, NewMenu(
NewItem('~в~ЁЇ –Џ', '', kbnokey, cm0, hcNew,
NewItem('~®~ЎкҐ¬ Ќ†Њ„', '', kbnokey, cm1, hcOpen,
nil)))));
end;
begin
assign(f, 'file.lb7');
reset(f);
for i:=1 to 10 do begin
with base[i] do begin
read(f, shop);
read(f, typecp);
read(f, freq);
read(f, ozu);
read(f, ngmd);
read(f, gmd);
read(f, monitor);
readln(f, cena);
end;
end;
close(f);
MyApp.Init;
MyApp.Run;
MyApp.Done;
end.
Соседние файлы в папке VAR0