home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
magazine
/
drdobbs
/
1990
/
12
/
dunteman.asc
< prev
next >
Wrap
Text File
|
1990-11-15
|
4KB
|
145 lines
_STRUCTURED PROGRAMMING COLUMN_
by Jeff Duntemann
[LISTING ONE]
{--------------------------------------------------------}
{ }
{ JXDESK }
{ }
{ Jeff's Experimental Desktop Manager for Turbo Vision }
{ }
{ by Jeff Duntemann }
{ For Turbo Pascal V6.0 }
{ }
{--------------------------------------------------------}
PROGRAM JDesk;
{ These are all Turbo Vision units: }
USES Objects, Drivers, Views, Menus, Dialogs, App;
CONST
SysStatCmd = 102;
NullCmd = 101;
TYPE
PDesk = ^TDesk;
TDesk = OBJECT(TApplication)
PROCEDURE HandleEvent(VAR Event: TEvent); VIRTUAL;
PROCEDURE InitMenuBar; VIRTUAL;
PROCEDURE InitStatusLine; VIRTUAL;
PROCEDURE SystemStatistics;
END;
VAR
Desk: TDesk; { Allocate an instantiation of TDesk }
{ TDesk method definitions: }
PROCEDURE TDesk.HandleEvent(VAR Event: TEvent);
BEGIN
TApplication.HandleEvent(Event);
IF Event.What = evCommand THEN { If the event was a command }
BEGIN
CASE Event.Command of
{ The system invokes a method in response to a command: }
SysStatCmd : SystemStatistics;
ELSE
Exit; { Exit the event handler; i.e., do nothing }
END;
ClearEvent(Event);
END;
END;
PROCEDURE TDesk.SystemStatistics;
VAR
R: TRect;
D: PDialog;
C: Word;
BEGIN
{ Create a new dialog: }
R.Assign(25, 5, 55, 14);
D := New(PDialog,Init(R,'System Stats'));
{ Create and insert controls into the dialog: }
R.Assign(9, 6, 21, 8);
D^.Insert(New(PButton,Init(R,'OK',cmCancel,bfNormal)));
{ Execute the modal dialog: }
C := DeskTop^.ExecView(D);
END;
PROCEDURE TDesk.InitMenuBar;
VAR
R: TRect;
BEGIN
GetExtent(R);
R.B.Y := R.A.Y+1;
MenuBar := New(PMenuBar,Init(R,NewMenu(
NewSubMenu('~p~',hcNoContext,NewMenu(
NewItem('~A~bout', '',0,NullCmd,hcNoContext,
NewItem('How to ~R~egister','',0,NullCmd,hcNoContext,
nil))),
NewSubMenu('~S~ystem', hcNoContext, NewMenu(
NewItem('~S~tatistics', '',0,SysStatCmd,hcNoContext,
NewItem('Set ~T~ime', '',0,NullCmd,hcNoContext,
NewItem('Set ~D~ate', '',0,NullCmd,hcNoContext,
NewItem('~R~un DOS app...','',0,NullCmd,hcNoContext,
NewLine(
NewItem('E~x~it','Alt-X',kbAltX,cmQuit,hcNoContext,
nil))))))),
NewSubMenu('Address ~B~ook',hcNoContext,NewMenu(
NewItem('~O~pen book', '',0,NullCmd,hcNoContext,
NewItem('~C~reate book','',0,NullCmd,hcNoContext,
NewItem('~P~rint book', '',0,NullCmd,hcNoContext,
nil)))),
NewSubMenu('~T~erm',hcNoContext,NewMenu(
NewItem('Link to ~M~CI', '',0,NullCmd,hcNoContext,
NewItem('Link to ~C~ompuServe','',0,NullCmd,hcNoContext,
NewItem('Link to ~B~ix', '',0,NullCmd,hcNoContext,
NewItem('~T~erminal window', '',0,NullCmd,hcNoContext,
nil))))),
nil)))))));
END;
PROCEDURE TDesk.InitStatusLine;
VAR
R: TRect;
BEGIN
GetExtent(R);
R.A.Y := R.B.Y-1;
StatusLine := New(PStatusLine, Init(R,
NewStatusDef(0, $FFFF,
NewStatusKey('~Alt-X~ Exit',kbAltX,cmQuit,nil),nil)));
END;
BEGIN
Desk.Init;
Desk.Run;
Desk.Done;
END.