Скачиваний:
126
Добавлен:
08.05.2014
Размер:
4.12 Кб
Скачать
{
Laboratory Task 2
~~~~~~~~~~~~~~~~~
Copyright (c) 2000 NeOS Programming Software, Aleksey Borzenkov
Lab02.pas - Ћб­®ў­®© д ©« Їа®Ја ¬¬л

(*) NeOS Programming Software ­Ґ § аҐЈЁбваЁа®ў ­­ п в®аЈ®ў п ¬ аЄ , ­® ўл
(*) ­Ґ ¤®«¦­л ҐҐ ЁбЇ®«м§®ў вм ­ЁЈ¤Ґ, Єа®¬Ґ нв®Ј® Є®ЇЁа ©в !!!
(*) NeOS Programming Software Ўл« ®б­®ў ­ ў 1998 Ј®¤г Ё ᥩз б ᮦҐа¦Ёв
(*) в®«мЄ® ®¤­®Ј® 祫®ўҐЄ  - ҐЈ® ®б­®ў вҐ«п Ѓ®а§Ґ­Є®ў  Ђ«ҐЄбҐп.

(!) ќв  Їа®Ја ¬¬  Ўл«  бЇҐжЁ «м­® Ё§Ј®в®ў«Ґ­  ¤«п ’Ґе­ЁзҐбЄ®Ј® “­ЁўҐабЁвҐв 
(!) €’ЊЋ Ё д Єг«мвҐв  Љ’Ё“ ("Љ®¬ЇмовҐа­ле ’Ґе­®«®ЈЁ© Ё “Їа ў«Ґ­Ёп") Є Є
(!) « Ў®а в®а­ п а Ў®в  б ­ §ў ­ЁҐ¬ "Pascal/156/TV § ¤ ­ЁҐ ­®¬Ґа 1".
}

program Lab02;

uses
DhCrt, Objects, Drivers, App, Views, Menus, Dialogs,
CSDialog;

type
{ Є« бб ЇаЁ«®¦Ґ­Ёп }
PMyApplication = ^TMyApplication;
TMyApplication = object(TApplication)
CPUData: TMyDialogData;
RAMData: TMyDialogData;

procedure InitMenuBar; virtual;
procedure InitStatusLine; virtual;
procedure HandleEvent(var Event: TEvent); virtual;
end;

{ Є« бб Є®­вҐЄбв­® § ўЁбЁ¬®© бва®ЄЁ б®бв®п­Ёп }
{ Ё¤Ґп ў§пв  Ё§ ЇаЁ¬Ґа®ў Turbo Vision Є®¬Ї ­ЁЁ Borland International }
PMyStatusLine = ^TMyStatusLine;
TMyStatusLine = object(TStatusLine)
function Hint(AHelpCtx: Word): String; virtual;
end;

{ ­ҐЄ®в®алҐ ­Ґ®Ўе®¤Ё¬лҐ Є®­бв ­вл }
const
hcMenuFile = 2000;
hcMenuFileExit = 2001;
hcMenuSelect = 2010;
hcMenuSelectCPU = 2011;
hcMenuSelectRAM = 2012;
cmMenuSelectCPU = 1000;
cmMenuSelectRAM = 1001;

{ ᮧ¤ Ґв ¬Ґ­о }
procedure TMyApplication.InitMenuBar;
var
R: TRect;
begin
GetExtent(R);
R.B.Y := R.A.Y + 1;
MenuBar := New(PMenuBar, Init(R, NewMenu(
NewSubMenu('~F~-” ©«', hcMenuFile, NewMenu(
NewItem('~X~-‚л室', 'Alt-X', kbAltX, cmQuit, hcMenuFileExit,
nil)),
NewSubMenu('~S~-‚лЎ®а', hcMenuSelect, NewMenu(
NewItem('~C~-Џ® з бв®вҐ –Џ', 'Alt-C', kbAltC, cmMenuSelectCPU, hcMenuSelectCPU,
NewItem('~R~-Џ® ®ЎкҐ¬г Ћ‡“', 'Alt-R', kbAltR, cmMenuSelectRAM, hcMenuSelectRAM,
nil))),
nil)))
));
end;

{ ᮧ¤ Ґв бва®Єг б®бв®п­Ёп }
procedure TMyApplication.InitStatusLine;
var
R: TRect;
begin
GetExtent(R);
R.A.Y := R.B.Y - 1;
StatusLine := New(PMyStatusLine, Init(R,
NewStatusDef(0, 0,
NewStatusKey('~Alt-X~ ‚л室', kbAltX, cmQuit,
NewStatusKey('~F10~ ЊҐ­о', kbF10, cmMenu,
nil)),
NewStatusDef(1, $FFFF,
NewStatusKey('~Alt-X~ ‚л室', kbAltX, cmQuit,
nil),
nil))
));
end;

{ ®Ўа Ў влў Ґв б®®ЎйҐ­Ёп }
procedure TMyApplication.HandleEvent(var Event: TEvent);
begin
inherited HandleEvent(Event);
if Event.What = evCommand then begin
case Event.Command of
cmMenuSelectCPU: begin
if ExecuteDialog(MakeCPUDialog, @CPUData) = cmOk then
ExecuteDialog(MakeInfoDialog(#3'Ќ ЁЎ®«ҐҐ Ї®¤е®¤пйЁ© Є®¬ЇмовҐа:'#13 +
FindByCPU(CPUData.ButtonData)), nil);
ClearEvent(Event);
end;
cmMenuSelectRAM: begin
if ExecuteDialog(MakeRAMDialog, @RAMData) = cmOk then
ExecuteDialog(MakeInfoDialog(#3'Ќ ЁЎ®«ҐҐ Ї®¤е®¤пйЁ© Є®¬ЇмовҐа:'#13 +
FindByRAM(RAMData.ButtonData)), nil);
ClearEvent(Event);
end;
end;
end;
end;

{ ў®§ўа й Ґв бва®Єг Ї®¤бЄ §ЄЁ }
function TMyStatusLine.Hint(AHelpCtx: Word): String;
var
S: String;
begin
case AHelpCtx of
hcMenuFile: S := 'ЊҐ­о ¤«п гЇа ў«Ґ­Ёп Їа®Ја ¬¬®©';
hcMenuFileExit: S := 'Ќ ¦¬ЁвҐ ¤«п ўл室  Ё§ Їа®Ја ¬¬л';
hcMenuSelect: S := 'ЊҐ­о ¤«п ўлЎ®а  б ¬®Ј® ¤ҐиҐў®Ј® Є®¬ЇмовҐа ';
hcMenuSelectCPU: S := 'Ќ ¦¬ЁвҐ ¤«п ®вЎ®а  Ї® з бв®вҐ –Џ';
hcMenuSelectRAM: S := 'Ќ ¦¬ЁвҐ ¤«п ®вЎ®а  Ї® ®ЎкҐ¬г Ћ‡“';
else S := '';
end;
if (AHelpCtx <> hcNoContext) and (S = '') then
S := 'Џ®¤бЄ §Є  ¤«п нв®Ј® Є®¬Ї®­Ґ­в  ­Ґ ­ ©¤Ґ­ ...';
Hint := S;
end;

var
MyApplication: TMyApplication;
Event: TEvent;
Done: Boolean;
begin
MyApplication.Init;
MyApplication.Run;
MyApplication.Done;
end.
Соседние файлы в папке VAR1