Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tastatur - nein / Maus - ja (https://www.delphipraxis.net/380-tastatur-nein-maus-ja.html)

Traumzauberbaum 10. Jul 2002 09:55


Tastatur - nein / Maus - ja
 
Ich sitz an nem kleinen Spiel, wo man Buttons abballern muss *g* allerdings reagieren die Buttons dummerweise auch auf Tastatur-Eingaben, ich will aber, dass die nur auf Mausklicks reagieren. Hat jemand nen Tip für mich? :?

Daniel 10. Jul 2002 10:28

Hi :hi:,

Du könntest die Eigenschaft "KeyPreview" des Formulars, auf dem sich das Ganze abspielt, auf TRUE setzen und über die "onKey...."-Events des Formulars die entscheidenden Tastencodes abfangen und unterdrücken, indem Du jeweils die "Key"-Variable (der Var-Parameter) auf 0 bzw. #0 setzt. (Das war zwar jetzt ein Banmdwurmsatz, aber ich hoffe, dass ich das Prinzip deutlich machen konnte :wink: ).

Grüße,
Daniel

Traumzauberbaum 10. Jul 2002 10:34

tja... :oops: das einzige, was ich verstanden hab, war das KeyPreview auf False zu setzen *g* kann ich den Quelltext mal schicken, dass mal kurz reinschaust? wir können das ja vielleicht gemeinsam per ICQ lösen? is das möglich?

Daniel 10. Jul 2002 10:38

ICQ habe ich leider nicht, aber ich kann Dir gleich einmal gerne ein Beispiel fertig machen... :wink:

Grüße,
Daniel

Traumzauberbaum 10. Jul 2002 10:41

jo das wär cool. email-adresse ist s.schubert@lecare.com. danke dir :D

Daniel 10. Jul 2002 10:55

Ich mag das nicht so gerne an EMail-Adresse senden, da die anderen Benutzer dann ja keine Gelegenheit hätten, meine Fehler auszubügeln :wink:.
Also: Das setzen der Eigenschaft "KeyPreview" auf TRUE soll bewirken, dass dieses Fenster, solange es im Vordergrund ist, alle Tastendrücke zuerst bekommt (und nicht etwa der Button, das Memo oder sonst eine Komponente, die gerade den Fokus hat).

Nun habe ich mir den Code-Rumpf für die onKey-Ereignisse erzeugen lassen und dort jeweils die im Parameter "Key" gelieferte Taste mit dem Wert 0 überschrieben. Das bewirkt, dass alle Komponenten, die sich jetzt im Anschluss noch für Tastatur-Eingaben interssieren, lediglich die Null geliefert bekommen. (Dieser Umstand mag für die Komponenten ein wenig frustrierend sein, aber das Formular ist in diesem Fall einfach schneller...)
Code:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  Key:= #0;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Key:= 0;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Key:= 0;
end;
Das Überschreiben aller drei Ereignisse führt mit Sicherheit zu dem Erfolg, dass Deine Anwendung auf gar keine Taste mehr reagiert und sich wirklich nur noch per Maus bedienen lässt. Du kannst mit diesen Ereignissen ja ein wenig herumspielen; eventuell kannst Du auch eines oder zwei weglassen und kommst trotzdem (und weniger restriktiv) zu Deinem Ziel.

:arrow: Keine Hemmungen bei weiteren Fragen!

Grüße,
Daniel

Traumzauberbaum 10. Jul 2002 11:03

cool danke dir *g* genau das wollt ich :-)

...

hat jemand vielleicht noch nen schönen Fadenkreuzcursor? hab nur diese blöden Windoofs-Cursor

Daniel B 10. Jul 2002 15:58

Zitat:

Zitat von Traumzauberbaum
hat jemand vielleicht noch nen schönen Fadenkreuzcursor? hab nur diese blöden Windoofs-Cursor

Hi,

klick mal dein Form1 an, im OI kannst du unter Cursor den crCross auswählen. Oder selber schreiben.

Zum Bleistift, im OnShow des Formulars: Form1.Cursor := crCross;

TheMiller 26. Jun 2003 22:08

Hi,

mal genau die andere Frage, wie kann ich die Maus sperren??

Daniel B 26. Jun 2003 22:10

Hallo,
Zitat:

Zitat von DJ-SPM
mal genau die andere Frage, wie kann ich die Maus sperren??

Mach Bitte ein neuen Thread auf! Danke! Daher gibt es an dieser Stelle mal ein:
*** CLOSE ***


Grüsse, Daniel :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz