![]() |
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? :?
|
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 |
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?
|
ICQ habe ich leider nicht, aber ich kann Dir gleich einmal gerne ein Beispiel fertig machen... :wink:
Grüße, Daniel |
jo das wär cool. email-adresse ist s.schubert@lecare.com. danke dir :D
|
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:
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.
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; :arrow: Keine Hemmungen bei weiteren Fragen! Grüße, Daniel |
cool danke dir *g* genau das wollt ich :-)
... hat jemand vielleicht noch nen schönen Fadenkreuzcursor? hab nur diese blöden Windoofs-Cursor |
Zitat:
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; |
Hi,
mal genau die andere Frage, wie kann ich die Maus sperren?? |
Hallo,
Zitat:
*** CLOSE *** Grüsse, Daniel :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz