Enter-Taste und ihr Verhalten

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
BernhardDEL
Beiträge: 36
Registriert: Di 31. Jan 2017, 17:18

Enter-Taste und ihr Verhalten

Beitrag von BernhardDEL »

:cry: Ich mal wieder mit einem (wahrscheinlich profanem) Problem :

In meinem inzwischen doch schon sehr umfangreichen Programm tut sich ein unschönes Problem auf - die Entertaste macht was sie will !!!

Beispiel :

Ich habe ein Formular, auf dem ein Panel mit einer Tabelle liegt. (TStringGrid)
Auf dem Panel befindet sich neben der Tabelle auch ein Button.

Beim Anklicken des Button wird eine von mir selbst geschriebene Procedure ausgeführt und es öffnet sich ein weiteres Panel
mit einer Eingabemaske, die mehrere Eingabefelder besitzt. (alles TEdit)

Gebe ich nun in ein solches Eingabefeld was ein und betätige die "Enter"-Taste, dann geht der Focus an den Button der Tabelle über und es hat
den Anschein als hätte man darauf geklickt, denn die oben erwähnte Procedure wird ausgeführt.

Im gesamten Programm habe ich kein "onEnter".

Was ich erreichen möchte ist, dass beim Betätigen der "Enter"-Taste die Eingabe im Feld beendet wird und der Focus
an das nächste in der Tab-Reihenfolge folgende Feld geht.

Hat da jemand eine Idee ? :?: :?: :?:

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Enter-Taste und ihr Verhalten

Beitrag von Michl »

Kannst du ein Minimalbeispiel schreiben, welches dieses Verhalten zeigt und hier als Zip hochladen (nur Dateien mit den Endungen *.pas, *.lfm, *.lpi, *.lpr) ? Ansonsten wird es wahrscheinlich schwierig, die Ursache zu erraten.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Bitschubser
Beiträge: 61
Registriert: Mo 27. Aug 2012, 15:43

Re: Enter-Taste und ihr Verhalten

Beitrag von Bitschubser »

BernhardDEL hat geschrieben:Gebe ich nun in ein solches Eingabefeld was ein und betätige die "Enter"-Taste, dann geht der Focus an den Button der Tabelle über und es hat
den Anschein als hätte man darauf geklickt, denn die oben erwähnte Procedure wird ausgeführt.


Du hast nicht zufällig die "default"-Property des Button auf true stehen?
So weit ich mich erinnere interessieren sich TEdits von Haus aus nicht für "Enter" - also bleibt das Enter beim übergeordnenten WinControl - und das drückt dann ggf. den Button bei dem Default auf true steht. (Gleiches gilt für "Cancel" und die Esc-Taste)

AndreasMR
Beiträge: 98
Registriert: Di 4. Aug 2015, 15:29
OS, Lazarus, FPC: Linux, Raspbian, Windows
CPU-Target: 64/32 Bit

Re: Enter-Taste und ihr Verhalten

Beitrag von AndreasMR »

Hallo Bernhard,

in Formularen ist es allgemein so, dass Drücken der Enter-Taste den voreingestellten Button auslöst. In Formularen wechselt man von einem Eingabefeld zum nächsten mit der TAB-Taste.

Wenn Dir dieses Verhalten nicht gefällt, würde es sich anbieten, den voreingestellten Button erst anzuzeigen bzw. zu aktivieren, wenn alle Eingabefelder (sinnvoll) befüllt sind. Dann erst gelangst Du mit der Enter-Taste zu der Funktion, die durch Drücken des Buttons ausgelöst werden soll - oder eben durch Anklicken des Buttons.

Beste Grüße

Andreas
Ubuntu 14.04 LTS / Raspbian / Windows: Lazarus ab 0.9 bis 3.0

BernhardDEL
Beiträge: 36
Registriert: Di 31. Jan 2017, 17:18

Re: Enter-Taste und ihr Verhalten

Beitrag von BernhardDEL »

Bitschubser hat geschrieben:Du hast nicht zufällig die "default"-Property des Button auf true stehen?
So weit ich mich erinnere interessieren sich TEdits von Haus aus nicht für "Enter" - also bleibt das Enter beim übergeordnenten WinControl - und das drückt dann ggf. den Button bei dem Default auf true steht. (Gleiches gilt für "Cancel" und die Esc-Taste)


Genau das wars.

Danke - Problem gelöst.

Antworten