home *** CD-ROM | disk | FTP | other *** search
- (* ----------------------------------------------------- *)
- (* MKDEMO.PAS *)
- (* *)
- (* Demonstriert den Gebrauch von EvHand und das *)
- (* Installieren eines eigenen Eventhandlers und das Aus- *)
- (* werten der Events. *)
- (* *)
- (* (c) 1991 by R.Reichert & toolbox *)
- (* ----------------------------------------------------- *)
- PROGRAM MouKeyDemo;
-
- USES MouKey, Crt;
-
- {$R-}
-
- (* ----------------------------------------------------- *)
- (* Ein Miniaturerbe von EventHandlerObj zu Demozwecken: *)
- (* Bei jedem drücken und loslassen einer Taste piepst er *)
- (* kurz. *)
- (* ----------------------------------------------------- *)
- TYPE
- EvHandDemoPtr = ^EvHandDemo;
- EvHandDemo = OBJECT (EventHandlerObj)
- PROCEDURE KeybHandler (Key : BYTE); VIRTUAL;
- END;
-
- PROCEDURE EvHandDemo.KeybHandler (Key : BYTE);
- BEGIN
- Sound (4000); Delay (3); NoSound;
- EventHandlerObj.KeybHandler (Key);
- END;
-
- VAR
- Ev : EventObj;
- i : INTEGER;
-
- (* ----------------------------------------------------- *)
- (* Ändert Mauszeiger je nach Bereich; piepst beim Druck *)
- (* von "r" oder "R". *)
- (* ----------------------------------------------------- *)
- {$F+} PROCEDURE AllHandler (VAR Event : EventObj); {$F-}
- BEGIN
- IF (Event.EventType AND EvMouAll > 0) THEN BEGIN
- Sound (250); Delay (1); NoSound;
- IF (Event.Y=2) THEN
- Mouse^.TextMouse (#25, 15, 15);
- IF (Event.Y=24) THEN
- Mouse^.TextMouse (#24, 15, 15);
- IF (Event.X=2) THEN
- Mouse^.TextMouse (#26, 15, 15);
- IF (Event.X=79) THEN
- Mouse^.TextMouse (#27, 15, 15);
- IF (Event.Y>2) AND (Event.Y<24) AND
- (Event.X>2) AND (Event.X<79) THEN
- Mouse^.TextMouse (#255, 15, 7)
- END;
- IF (Event.EventType=EvKeyPressed) THEN BEGIN
- IF (Event.Key=Ord ('R')) OR
- (Event.Key=Ord ('r')) THEN BEGIN
- Sound (1000); Delay (15); NoSound;
- END;
- END;
- END;
-
-
- BEGIN
- TextAttr := 7; ClrScr;
- IF (EvHand=NIL) OR { Fehler beim initia- }
- (Mouse=NIL) THEN BEGIN { lisieren aufgetreten ? }
- TextAttr := $7F;
- Write ('Fehler beim Initialisieren der Objekte ');
- Writeln ('(im Init-Teil der Unit MouKey) !');
- TextAttr := 15;
- Writeln;
- Writeln ('Programm abgebrochen.');
- Halt;
- END;
-
- { Für Bildschirmausgabe vorbereiten: }
- TextAttr := 15;
- Writeln ('Demo der Unit MOUKEY - EventHandling':55);
- TextAttr := 7;
- FOR i := 1 TO 80 DO Write ('─');
- GotoXY (1, 24);
- FOR i := 1 TO 80 DO Write ('─');
- TextAttr := 15;
- Write ('(c) ''91 by R.Reichert & toolbox':55);
- TextAttr := 7;
- Window (2, 3, 79, 23);
- Writeln (' Bitte irgendeine Eingabe machen, ',
- 'Maus oder Tastatur: ');
-
- { Raus mit dem alten, rein mit dem Demoobjekt: }
- DeInstall;
- ReInstall (New (EvHandDemoPtr, Init));
-
- { Handler eintragen, hier für alle Eventarten.
- Zum Experimentieren am besten EvMouAll etc ein-
- setzen. }
- EvHand^.RegisterHandler (EvAll, AllHandler);
- Mouse^.SetArea (2, 2, 79, 24);
- REPEAT
- Mouse^.Show; { Maus sichtbar machen }
- EvHand^.SetTakeOut (TRUE); { aus Tastpuf entfernen }
- EvHand^.WaitForEvent (EvAll, Ev); { warten }
- Mouse^.Hide;
- Writeln;
- Write ('Zeitpunkt: ', Ev.Time,
- ' Event-Art: ', Ev.EventType:4,' : ');
- TextAttr := 15;
- CASE Ev.EventType OF
- EvMouMove,
- EvLeftPress,
- EvLeftRel,
- EvRightPress,
- EvRightRel :
- Write ('Maus => X: ', Ev.X,' Y: ',
- Ev.Y, ' Taste(n): ',Ev.Buttons);
- EvKeyPressed :
- IF Ev.Key<255 THEN
- Write ('"Normale" Taste, Code: ',Ev.Key,
- ' Zeichen: ', Chr (BYTE (Ev.Key)))
- ELSE
- Write ('erweiterte Taste, Code: ',Ev.Key);
- EvKeyState :
- Write ('Statustaste, BitWert: ', Ev.StateKey);
- EvKeyUnknown :
- Write ('Unbekannte Taste, ScanCode: ',
- Ev.ScanCode, ' Status: ', Ev.State);
- END;
- TextAttr := 7
- UNTIL (Ev.EventType=EvKeyPressed) AND (Ev.Key=27);
- EvHand^.SetTakeOut (FALSE);
- Writeln;
- Writeln;
- Write ('Press key ENTER to finish...');
- Readln;
- { ^^^ ist EvHandDemo installiert, so kann man auch bei
- Tastendrücken, die gar nicht mehr registriert
- werden, lustige Effekte erzielen. }
-
- Window (1,1,80,25);
- END.
- (* ----------------------------------------------------- *)
- (* Ende von MKDEMO.PAS *)
- (* ----------------------------------------------------- *)
-