home *** CD-ROM | disk | FTP | other *** search
- (* ---------------------------------------------------------------- *)
- (* HEXADEMO.PAS *)
- (* *)
- (* Demoprogramm zu der Unit HexView *)
- (* *)
- (* (c) 1992 R.Reichert & DMV-Verlag *)
- (* ---------------------------------------------------------------- *)
- PROGRAM HexadecimalViewers;
-
- USES Objects, Drivers, Views,
- Menus, Dialogs, GadGets, HexView, App;
-
- CONST
- cmFileViewer = 1000;
- cmMemoryViewer= 101;
-
- wnNumber : BYTE = 0;
-
- TYPE
- pHexViewerDemo = ^tHexViewerDemo;
- tHexViewerDemo = OBJECT (tApplication)
- Clock: pClockView;
- Heap: pHeapView;
-
- CONSTRUCTOR Init;
- PROCEDURE FileViewer;
- PROCEDURE MemoryViewer;
- PROCEDURE HandleEvent (VAR Event: tEvent); VIRTUAL;
- PROCEDURE Idle; VIRTUAL;
- PROCEDURE InitMenuBar; VIRTUAL;
- PROCEDURE InitStatusLine; VIRTUAL;
- END;
-
- CONSTRUCTOR tHexViewerDemo.Init;
- VAR
- R: tRect;
- BEGIN
- tApplication.Init;
-
- GetExtent (R);
- R.A.X := R.B.X - 9; R.B.Y := R.A.Y + 1;
- Clock := New (PClockView, Init (R));
- Insert (Clock);
-
- GetExtent (R);
- Dec (R.B.X);
- R.A.X := R.B.X - 9; R.A.Y := R.B.Y - 1;
- Heap := New (PHeapView, Init (R));
- Insert (Heap);
- END;
-
- PROCEDURE tHexViewerDemo.FileViewer;
- VAR
- View: pView;
- BEGIN
- Inc (wnNumber);
- View := ValidView (HexViewDialog (wnNumber));
- IF View <> NIL THEN Desktop^.Insert (View)
- ELSE Dec (wnNumber);
- END;
-
- PROCEDURE tHexViewerDemo.MemoryViewer;
- VAR
- R: tRect;
- View: pView;
- BEGIN
- R.Assign (10, 6, 70, 20);
- Inc (wnNumber);
- View := ValidView (New (pHexMemWindow, Init (R, wnNumber)));
- IF View <> NIL THEN Desktop^.Insert (View)
- ELSE Dec (wnNumber);
- END;
-
- PROCEDURE tHexViewerDemo.HandleEvent (VAR Event: tEvent);
- PROCEDURE Tile;
- VAR R: TRect;
- BEGIN
- Desktop^.GetExtent(R);
- Desktop^.Tile(R);
- END;
-
- PROCEDURE Cascade;
- VAR R: TRect;
- BEGIN
- Desktop^.GetExtent(R);
- Desktop^.Cascade(R);
- END;
-
- BEGIN
- IF (Event.What = evCommand) AND
- (Event.Command = cmClose) THEN
- Dec (wnNumber);
-
- tApplication.HandleEvent (Event);
-
- IF Event.What = evCommand THEN BEGIN
- CASE Event.Command OF
- cmFileViewer: FileViewer;
- cmMemoryViewer: MemoryViewer;
- cmTile: Tile;
- cmCascade: Cascade;
- ELSE
- Exit;
- END;
- ClearEvent (Event);
- END;
- END;
-
- PROCEDURE tHexViewerDemo.Idle;
- FUNCTION IsTileable (P: pView): BOOLEAN; FAR;
- BEGIN
- IsTileable := P^.Options AND ofTileable <> 0;
- END;
- BEGIN
- tApplication.Idle;
- Clock^.Update;
- Heap^.Update;
- IF Desktop^.FirstThat (@IsTileable) <> NIL THEN
- EnableCommands ([cmTile, cmCascade])
- ELSE
- DisableCommands ([cmTile, cmCascade]);
- END;
-
- PROCEDURE tHexViewerDemo.InitMenuBar;
- VAR
- R: tRect;
- BEGIN
- GetExtent (R);
- R.B.Y := R.A.Y + 1;
- MenuBar := New (pMenuBar, Init (R, NewMenu (
- NewSubMenu (' Hex~v~iewers ', hcNoContext, NewMenu (
- NewItem (' ~F~ile Viewer ', 'Alt-~F~', kbAltF,
- cmFileViewer, hcNoContext,
- NewItem (' ~M~emory Viewer ', 'Alt-~M~', kbAltM,
- cmMemoryViewer, hcNoContext,
- NewLine(
- NewItem('E~x~it', 'Alt-X', kbAltX,
- cmQuit, hcNoContext,
- NIL))))),
- NewSubMenu (' ~W~indows ', hcNoContext, NewMenu(
- NewItem (' ~R~esize/move ','Ctrl-F5', kbCtrlF5,
- cmResize, hcNoContext,
- NewItem (' ~Z~oom ', 'F5', kbF5, cmZoom, hcNoContext,
- NewItem (' ~N~ext ', 'F6', kbF6, cmNext, hcNoContext,
- NewItem (' ~C~lose ', 'Alt-F3', kbAltF3, cmClose, hcNoContext,
- NewItem (' ~T~ile ', '', kbNoKey, cmTile, hcNoContext,
- NewItem (' C~a~scade ', '', kbNoKey, cmCascade, hcNoContext,
- NIL))))))),
- NIL)))));
- END;
-
- PROCEDURE tHexViewerDemo.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,
- NewStatusKey (' ~Alt-F3~ Close ', kbAltF3, cmClose,
- NewStatusKey (' ~F5~ Zoom ', kbF5, cmZoom,
- NewStatusKey ('', kbF10, cmMenu,
- NewStatusKey ('', kbCtrlF5, cmResize,
- NIL))))),
- NIL)));
- END;
-
- VAR
- ViewDemo: tHexViewerDemo;
-
- BEGIN
- ViewDemo.Init;
- ViewDemo.Run;
- ViewDemo.Done;
- END.
- (* ---------------------------------------------------------------- *)
- (* Ende von HEXADEMO.PAS *)
- (* ---------------------------------------------------------------- *)
-