Entwickler-Ecke

Sonstiges (Delphi) - Button nicht per Enter anklicken


Pandax3 - Mi 30.03.11 21:37
Titel: Button nicht per Enter anklicken
Hallo,
ich habe einen Button und ein Label, dass die Clicks zählt wie oft ich auf den Button gedrückt habe ;D
jetzt möchte ich aber, dass man mit der Maus auf den Button drückt und nicht mit der Enter Taste.

Also wenn man die Enter Taste gedrückt hält, bekommt man ca 100 cklicks in 4 sekunden - das möchte ich verhindern ;)

Also kann man es irgendwie so einstellen, dass man den Button nicht per Enter "aktivieren" kann?

Danke :D


Dude566 - Mi 30.03.11 22:06

Was mir spontan einfällt, wäre bei jedem Klick den Focus wieder auf ein anderes Element zu setzen. Kann es gerade nicht testen, probier es doch mal so. ;)


Pandax3 - Mi 30.03.11 22:10

Ich habe nur 1 Button in der Form ;D
und auf ein Label kann ich den Focus doch nicht richten, oder?


HenryHux - Mi 30.03.11 22:13

Wenns dirty sein soll mach doch nen invisible Button oder Edit Feld dem du den Focus gibst.
Ich glaube du kannst sogar deiner ganzen Form den Focus geben.
Einfach mal ausprobieren.

Lg


EDIT: Der ganzen Form den Focus geben, klappt. Aber Martoks Methode scheint ein bisschen besser =)


Martok - Mi 30.03.11 22:14

Du könntest einen TSpeedButton statt eines TButtons verwenden. Der kann keinen Fokus erhalten, damit stellt sich das Problem gar nicht ;-)


Pandax3 - Mi 30.03.11 22:50

danke an alle ^^

Edit:
Ich kann den Focus an einen andere Button geben, der muss aber sichtbar sein.
An eine Form kann ich den Focus nicht geben. Jetzt hab ich allerdings nen Button ohne Funktion in der Form - auch net so schön xD

Wie machst du das, wenn du der ganzen Form den Focus gibst?


Quake User - Do 31.03.11 00:08

- Du solltest den Nutzer Deiner Programme nicht Deine Bedienweise aufzwingen. Eine Bedienung mit Tastatur muss auch möglich sein.
- Beschreib genauer was Du realisieren möchtest. Dann könnne wir Dir helfen.

Moderiert von user profile iconMartok: Komplettzitat des OP entfernt


Dude566 - Do 31.03.11 00:17

Für mich hörte es sich so an als arbeite er an einem Klickspiel wo es nicht sinnvoll ist einen Bug zu haben durch den man sich einen Vorteil verschaffen kann.
Deshalb wird er vermutlich das Drücken des Buttons durch Enter verhindern wollen. ;)


Quake User - Do 31.03.11 00:34

user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
Für mich hörte es sich so an als arbeite er an einem Klickspiel wo es nicht sinnvoll ist einen Bug zu haben durch den man sich einen Vorteil verschaffen kann.
Deshalb wird er vermutlich das Drücken des Buttons durch Enter verhindern wollen. ;)

In dem Fall sollte er einfach prüfen, ob ENTER gedrück wurde und das als Fehler ausgeben. Oder?


hirschv - Do 31.03.11 16:09

Wie wäre es wenn Du statt auf OnEnter einfach auf OnMouseDown reagierst?


Pandax3 - Do 31.03.11 16:10

ja, es soll ein Klickspiel werden ;)
aber das mit OnKeyPress oder OnKeyDown geht nicht. Er führt die aktion den Button zu drücken trotzdem aus :D
Wenn ich bei OnKeyDown auf VK_delete eine showmessage lege, dann zeigt er mir das Fenster, falls der Button im Focus ist - wenn ich bei OnKeydown VK_return darauf habe zeigt er mir kein Fenster bei showmessage, obwohl der Button im Focus ist ;O
Er ignorit also dann den Befehl Vk_Return - und die ButtonClicks gehn sehr schnell in die Höhe :D Wie Dude es bereits gesagt hat, man könnte es als Bug im Spiel bezeichnen xD

weiß einer was ich falsch mache? :D

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

user profile iconhirschv hat folgendes geschrieben Zum zitierten Posting springen:
Wie wäre es wenn Du statt auf OnEnter einfach auf OnMouseDown reagierst?

wie meinst du das?

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

So ich habe jetzt einen Speed Button für den Button genommen und schon klappt alles ;D
War wohl die einfachste Lösung.
Danke Martok und auch Danke an alle anderen :D


Quake User - Fr 01.04.11 01:06

user profile iconPandax3 hat folgendes geschrieben Zum zitierten Posting springen:
So ich habe jetzt einen Speed Button für den Button genommen und schon klappt alles ;D
War wohl die einfachste Lösung.
Danke Martok und auch Danke an alle anderen :D


Das ist eher ein "Workaround".


thepaine91 - Fr 01.04.11 13:43

Ich verstehe nicht so ganz warum man dann nicht einfach auf onMouseDown statt onKeyDown o. onClick reagiert....
Dann noch die Abfrage ob mb_left und das wars.


hirschv - Mo 04.04.11 09:03

Hallo,
ich meinte das so wie es Nicolas auch vorgeschlagen hat. Ich hatte das mal getestet und es scheint zu funktionieren. Eventueller Nachteil ist, das keine Tastaturbefehle akzeptiert werden (Der Button reagiert zwar visuell, es wird aber kein Event ausgelöst, bzw. behandelt), was aber in Deinem Sinne sein sollte ;-)

Gruß