home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 12 / grdlagen / mkdemo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-09-10  |  3.6 KB  |  108 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     MKDEMO.PAS                         *)
  3. (*          (c) 1990 Raimond Reichert & TOOLBOX           *)
  4. (* ------------------------------------------------------ *)
  5. PROGRAM MouseKeyDemo;
  6.  
  7. USES MouseKey, Crt;
  8.  
  9. VAR
  10.   Ev : EventObj;
  11.   i  : INTEGER;
  12.  
  13. (* ------------------------------------------------------ *)
  14. (*  Der Handler zu Demozwecken: er piepst nur kurz.       *)
  15.  
  16. {$F+}
  17.   PROCEDURE AllHandler(VAR Event : EventObj);
  18.   BEGIN
  19.     Sound(250); Delay(1); NoSound;
  20.     IF (Event.EventType AND EvMouAll > 0) THEN BEGIN
  21.       IF (Event.Y =  2) THEN Mouse^.TextMouse(#25, 15, 7);
  22.       IF (Event.Y = 24) THEN Mouse^.TextMouse(#24, 15, 7);
  23.       IF (Event.X =  2) THEN Mouse^.TextMouse(#26, 15, 7);
  24.       IF (Event.X = 79) THEN Mouse^.TextMouse(#27, 15, 7);
  25.       IF (Event.Y > 2) AND (Event.Y < 24) AND
  26.          (Event.X > 2) AND (Event.X < 79) THEN
  27.         Mouse^.TextMouse(#255, 15, 7)
  28.     END;
  29.     IF (Event.EventType = EvKeyPressed) THEN BEGIN
  30.       IF (Event.Key = Ord('R')) OR
  31.          (Event.Key = Ord('r')) THEN BEGIN
  32.         Sound(1000); Delay(15); NoSound;
  33.       END;
  34.     END;
  35.   END;
  36. {$F-}
  37.  
  38. BEGIN
  39.   TextAttr := 7;  ClrScr;
  40.   IF (EvHand = NIL) OR (Mouse = NIL) THEN BEGIN
  41.     TextAttr := $7F;
  42.     Write('Fehler beim Initialisieren der Objekte ');
  43.     WriteLn('(im Init-Teil der Unit MouKey) !');
  44.     TextAttr := 15;
  45.     WriteLn;
  46.     WriteLn('Programm abgebrochen.');
  47.     Halt;
  48.   END;
  49.   TextAttr := 15;
  50.   WriteLn('Demo der Unit MOUKEY - EventHandling':55);
  51.   TextAttr := 7;
  52.   FOR i := 1 TO 80 DO Write('─');
  53.   GotoXY(1, 24);
  54.   FOR i := 1 TO 80 DO Write('─');
  55.   TextAttr := 15;
  56.   Write ('(c) 1990 Raimond Reichert & TOOLBOX':55);
  57.   TextAttr := 7;
  58.   Window (2, 3, 79, 23);
  59.   WriteLn(' Bitte irgendeine Eingabe machen, ',
  60.            'Maus oder Tastatur: ');
  61.     { Handler eintragen, hier für alle Eventarten.         }
  62.     { Zum Experimentieren am besten "EvMouAll" etc. ein-   }
  63.     { setzen.                                              }
  64.   EvHand^.RegisterHandler(EvAll, AllHandler);
  65.   Mouse^.SetArea(2, 2, 79, 24);
  66.   REPEAT
  67.     Mouse^.Show;                    { Maus sichtbar machen }
  68.     TakeOut := TRUE;        { aus Tastaturpuffer entfernen }
  69.     EvHand^.WaitForEvent(EvAll, Ev);
  70.     Mouse^.Hide;
  71.     WriteLn;
  72.     Write('Zeitpunkt: ',  Ev.Time,
  73.           ' Event-Art: ', Ev.EventType:4,' : ');
  74.     TextAttr := 15;
  75.     CASE Ev.EventType OF
  76.       EvMouMove,
  77.       EvLeftPress,
  78.       EvLeftRel,
  79.       EvRightPress,
  80.       EvRightRel    : Write('Maus => X: ', Ev.X,
  81.                             ' Y: ',        Ev.Y,
  82.                             ' Taste(n): ', Ev.Buttons);
  83.       EvKeyPressed  : IF Ev.Key < 255 THEN
  84.                         Write('"Normale" Taste, Code: ',
  85.                               Ev.Key,
  86.                               ' Zeichen: ',
  87.                               Chr(BYTE(Ev.Key)))
  88.                       ELSE
  89.                         Write('erweiterte Taste, Code: ',
  90.                               Ev.Key);
  91.       EvKeyState    : Write('Statustaste, BitWert: ',
  92.                             Ev.StateKey);
  93.       EvKeyUnknown  : Write('Unbekannte Taste, ScanCode: ',
  94.                             Ev.ScanCode,
  95.                             ' Status: ', Ev.State);
  96.     END;
  97.     TextAttr := 7
  98.   UNTIL (Ev.EventType = EvKeyPressed) AND (Ev.Key = 27);
  99.   TakeOut := FALSE;
  100.   WriteLn;
  101.   WriteLn;
  102.   Write('<ENTER> zum Beenden...');
  103.   ReadLn;
  104.   Window(1, 1, 80, 25)
  105. END.
  106. (* ------------------------------------------------------ *)
  107. (*                 Ende von MKDEMO.PAS                    *)
  108.