home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* NEVENTS.PAS *)
- (* *)
- (* Eine kleine Demo für neue Maus- und Tast.Routinen *)
- (* (C) 1992 by Christian Ohr & DMV-Verlag *)
- (* ------------------------------------------------------ *)
- {$R-,S-,I-,B-,D-,L-,V-,A+,F+,O+,X+}
-
- PROGRAM NEvents;
-
-
- USES Objects, Drivers, Views, App, XEvents, Graph;
-
-
- CONST
- DriverPath = 'C:\TPAS60\BGI';
-
- HexDigits : ARRAY[0..15] OF CHAR = '0123456789ABCDEF';
-
-
- TYPE
- tGraphApp = OBJECT(tProgram)
- CONSTRUCTOR Init;
- DESTRUCTOR Done; VIRTUAL;
- PROCEDURE GetEvent (VAR Event: tEvent); VIRTUAL;
- PROCEDURE HandleEvent (VAR Event: tEvent); VIRTUAL;
- END;
-
-
-
- FUNCTION WORD2HexS(W : WORD) : STRING;
- VAR
- S : STRING;
- BEGIN
- S[0] := #4;
- S[1] := HexDigits[ W SHR 12 ];
- S[2] := HexDigits[(W SHR 8) AND $0F];
- S[3] := HexDigits[(W SHR 4) AND $0F];
- S[4] := HexDigits[ W AND $0F];
- WORD2HexS := S;
- END;
-
-
- PROCEDURE InitGraphVideo;
- VAR
- grDriver, grMode, grError: INTEGER;
- BEGIN
- StartupMode := ScreenMode;
- grDriver := Detect;
- InitGraph(grDriver, grMode, DriverPath);
- grError := GraphResult;
- IF grError <> grOk THEN RunError(1);
- ScreenMode := grMode;
- ClearDevice;
- END;
-
-
- PROCEDURE DoneGraphVideo;
- BEGIN
- CloseGraph;
- SetVideoMode(StartupMode);
- END;
-
-
-
- (* ------------------------------------------------------ *)
- (* tGraphApp *)
- (* ------------------------------------------------------ *)
-
-
- CONSTRUCTOR tGraphApp.Init;
- VAR
- R: tRect;
- BEGIN
- InitEvents; (* die neue Version! *)
- InitGraphVideo;
- R.Assign(0, 0, GetMaxX, GetMaxY);
- tGroup.Init(R);
- State := sfModal;
- Options := 0;
- Application := @Self;
- Randomize;
- SetTextJustify(CenterText, CenterText);
- OutTextXY(GetMaxX DIV 2, GetMaxY - 10,
- 'Alt-F12 zum Beenden!');
- ShowMouse;
- END;
-
-
- DESTRUCTOR tGraphApp.Done;
- BEGIN
- HideMouse;
- tGroup.Done;
- DoneGraphVideo;
- DoneEvents;
- Application := NIL;
- END;
-
-
- PROCEDURE tGraphApp.GetEvent (VAR Event: tEvent);
- BEGIN
- GetMouseEvent(Event);
- IF Event.What = evNothing THEN
- GetKeyEvent(Event);
- (* ohne allen Schnickschnack! *)
- END;
-
-
- PROCEDURE tGraphApp.HandleEvent (VAR Event: tEvent);
- VAR
- KeyCodeS: STRING[6];
- XS, YS : STRING[3];
- BEGIN
- IF Event.What = evKeyDown THEN
- IF Event.KeyCode = kbAltF12 THEN BEGIN
- Event.What := evCommand;
- Event.Command := cmQuit;
- END ELSE BEGIN
- HideMouse;
- KeyCodeS := WORD2HexS(Event.KeyCode);
- SetFillStyle(SolidFill, Black);
- Bar(MouseWhere.X - TextWidth(KeyCodeS) DIV 2 - 3,
- MouseWhere.Y - TextHeight(KeyCodeS) DIV 2 - 3,
- MouseWhere.X + TextWidth(KeyCodeS) DIV 2 + 3,
- MouseWhere.Y + TextHeight(KeyCodeS) DIV 2 + 3);
- OutTextXY(MouseWhere.X, MouseWhere.Y, KeyCodeS);
- ClearEvent(Event);
- ShowMouse;
- END;
-
- tProgram.HandleEvent(Event);
-
- IF Event.What = evMouseDown THEN BEGIN
- HideMouse;
- SetFillStyle(Succ(Random(CloseDotFill)),
- Succ(Random(GetMaxColor)));
- FillEllipse(Event.Where.X, Event.Where.Y,
- Random(100 + 20), Random(100 + 20));
- Str(Event.Where.X:3, XS);
- Str(Event.Where.Y:3, YS);
- OutTextXY(Event.Where.X, Event.Where.Y, XS + '/' + YS);
- ShowMouse;
- ClearEvent(Event);
- END;
- END;
-
-
- VAR
- GraphApp: tGraphApp;
-
- BEGIN
- GraphApp.Init;
- GraphApp.Run;
- GraphApp.Done;
- END.
-
-
-
- (* ------------------------------------------------------ *)
- (* Ende von NEVENTS.PAS *)
-