home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9302 / tvision / tvpas / nevents.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-11-10  |  3.7 KB  |  161 lines

  1. (* ------------------------------------------------------ *)
  2. (*                      NEVENTS.PAS                       *)
  3. (*                                                        *)
  4. (*   Eine kleine Demo für neue Maus- und Tast.Routinen    *)
  5. (*         (C) 1992 by Christian Ohr & DMV-Verlag         *)
  6. (* ------------------------------------------------------ *)
  7. {$R-,S-,I-,B-,D-,L-,V-,A+,F+,O+,X+}
  8.  
  9. PROGRAM NEvents;
  10.  
  11.  
  12. USES Objects, Drivers, Views, App, XEvents, Graph;
  13.  
  14.  
  15. CONST
  16.   DriverPath = 'C:\TPAS60\BGI';
  17.  
  18.   HexDigits : ARRAY[0..15] OF CHAR = '0123456789ABCDEF';
  19.  
  20.  
  21. TYPE
  22.   tGraphApp = OBJECT(tProgram)
  23.     CONSTRUCTOR Init;
  24.     DESTRUCTOR Done; VIRTUAL;
  25.     PROCEDURE GetEvent (VAR Event: tEvent); VIRTUAL;
  26.     PROCEDURE HandleEvent (VAR Event: tEvent); VIRTUAL;
  27.   END;
  28.  
  29.  
  30.  
  31. FUNCTION WORD2HexS(W : WORD) : STRING;
  32. VAR
  33.   S : STRING;
  34. BEGIN
  35.   S[0] := #4;
  36.   S[1] := HexDigits[ W SHR 12        ];
  37.   S[2] := HexDigits[(W SHR 8) AND $0F];
  38.   S[3] := HexDigits[(W SHR 4) AND $0F];
  39.   S[4] := HexDigits[ W        AND $0F];
  40.   WORD2HexS := S;
  41. END;
  42.  
  43.  
  44. PROCEDURE InitGraphVideo;
  45. VAR
  46.   grDriver, grMode, grError: INTEGER;
  47. BEGIN
  48.   StartupMode := ScreenMode;
  49.   grDriver := Detect;
  50.   InitGraph(grDriver, grMode, DriverPath);
  51.   grError := GraphResult;
  52.   IF grError <> grOk THEN RunError(1);
  53.   ScreenMode := grMode;
  54.   ClearDevice;
  55. END;
  56.  
  57.  
  58. PROCEDURE DoneGraphVideo;
  59. BEGIN
  60.   CloseGraph;
  61.   SetVideoMode(StartupMode);
  62. END;
  63.  
  64.  
  65.  
  66. (* ------------------------------------------------------ *)
  67. (*                     tGraphApp                          *)
  68. (* ------------------------------------------------------ *)
  69.  
  70.  
  71. CONSTRUCTOR tGraphApp.Init;
  72. VAR
  73.   R: tRect;
  74. BEGIN
  75.   InitEvents;                        (* die neue Version! *)
  76.   InitGraphVideo;
  77.   R.Assign(0, 0, GetMaxX, GetMaxY);
  78.   tGroup.Init(R);
  79.   State := sfModal;
  80.   Options := 0;
  81.   Application := @Self;
  82.   Randomize;
  83.   SetTextJustify(CenterText, CenterText);
  84.   OutTextXY(GetMaxX DIV 2, GetMaxY - 10,
  85.             'Alt-F12 zum Beenden!');
  86.   ShowMouse;
  87. END;
  88.  
  89.  
  90. DESTRUCTOR tGraphApp.Done;
  91. BEGIN
  92.   HideMouse;
  93.   tGroup.Done;
  94.   DoneGraphVideo;
  95.   DoneEvents;
  96.   Application := NIL;
  97. END;
  98.  
  99.  
  100. PROCEDURE tGraphApp.GetEvent (VAR Event: tEvent);
  101. BEGIN
  102.   GetMouseEvent(Event);
  103.   IF Event.What = evNothing THEN
  104.     GetKeyEvent(Event);
  105.   (* ohne allen Schnickschnack! *)
  106. END;
  107.  
  108.  
  109. PROCEDURE tGraphApp.HandleEvent (VAR Event: tEvent);
  110. VAR
  111.   KeyCodeS: STRING[6];
  112.   XS, YS  : STRING[3];
  113. BEGIN
  114.   IF Event.What = evKeyDown THEN
  115.     IF Event.KeyCode = kbAltF12 THEN BEGIN
  116.       Event.What := evCommand;
  117.       Event.Command := cmQuit;
  118.     END ELSE BEGIN
  119.       HideMouse;
  120.       KeyCodeS := WORD2HexS(Event.KeyCode);
  121.       SetFillStyle(SolidFill, Black);
  122.       Bar(MouseWhere.X - TextWidth(KeyCodeS) DIV 2 - 3,
  123.           MouseWhere.Y - TextHeight(KeyCodeS) DIV 2 - 3,
  124.           MouseWhere.X + TextWidth(KeyCodeS) DIV 2 + 3,
  125.           MouseWhere.Y + TextHeight(KeyCodeS) DIV 2 + 3);
  126.       OutTextXY(MouseWhere.X, MouseWhere.Y, KeyCodeS);
  127.       ClearEvent(Event);
  128.       ShowMouse;
  129.     END;
  130.  
  131.   tProgram.HandleEvent(Event);
  132.  
  133.   IF Event.What = evMouseDown THEN BEGIN
  134.     HideMouse;
  135.     SetFillStyle(Succ(Random(CloseDotFill)),
  136.                  Succ(Random(GetMaxColor)));
  137.     FillEllipse(Event.Where.X, Event.Where.Y,
  138.                 Random(100 + 20), Random(100 + 20));
  139.     Str(Event.Where.X:3, XS);
  140.     Str(Event.Where.Y:3, YS);
  141.     OutTextXY(Event.Where.X, Event.Where.Y, XS + '/' + YS);
  142.     ShowMouse;
  143.     ClearEvent(Event);
  144.   END;
  145. END;
  146.  
  147.  
  148. VAR
  149.   GraphApp: tGraphApp;
  150.  
  151. BEGIN
  152.   GraphApp.Init;
  153.   GraphApp.Run;
  154.   GraphApp.Done;
  155. END.
  156.  
  157.  
  158.  
  159. (* ------------------------------------------------------ *)
  160. (*                 Ende von NEVENTS.PAS                   *)
  161.