DBGrid-Feld: Tastenfunktion "wegnehmen"

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

DBGrid-Feld: Tastenfunktion "wegnehmen"

Beitrag von Aliobaba »

Hallo,

ein DBGrid-feld bringt ja einige "Eigenschaften" mit. So wandert das aktive Feld mit den "Pfeil nach oben"- oder "Pfeil nach unten"-Tasten eine Stelle nach oben oder unten.

Das ist gut und prima!

Mit der Enter- oder Tab-Taste wandert das aktive Feld ebenfalls nach unten.

Das möchte ich manchmal nicht.

Die Enter Taste wird aber von vielen Usern als "Bestätigungs-Taste" angesehen und so kann es zu "Mißverständnissen" kommen.

Wie kann ich es erreichen, dass das DBGrid-Feld die Enter- und die Tab-Taste "ignoriert", so dass entweder gar nichts passiert oder ich diesen Tasten mit dem "onkeydown"-Ereignis die Funktion zuordnen kann, die ich selber gerne möchte?

------------------------------------------------

Weitere Frage:
Ich möchte ein Programm mit Tastatur-Short-Cuts anreichern; es müssen viele Shortcuts implementiert werden, da ich von einer blinden Benutzerin gebeten worden bin, mein Programm "MyMemoryDB" für Blinde nutzbar zu machen.

Code: Alles auswählen

 
     If (ssCtrl in Shift) then  if Key=Ord('V') then   DBMemoText.PasteFromClipboard;
     If (ssCtrl in Shift) then  if Key=Ord('C') then   DBMemoText.CopyToClipboard;
 
     If (ssAlt in Shift) And (Key=Ord('O')) then Form2.TextOderverknuepfung;
     If (ssAlt in Shift) And (Key=Ord('E')) then Form2.ErweiterteSWSuche;
     If (ssAlt in Shift) And (Key=Ord('N')) then Form2.Neues_Schlagwort;
     If (ssAlt in Shift) And (Key=Ord('M')) then Form2.Schlagwort_aendern;
 
Eigenartigerweise hat die "Alt-Taste" ein "Eigenleben". Manchmal erscheinen in Textfeldern eigenartige Zeichen (Herzchen, Kreuze) nach Betätigen eines Shortcuts, der mit der Alt-Taste verknüpft ist.
Wie kommt das?


Aliobaba
http://www.mymemorydb.n-bay.de/
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

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

Re: DBGrid-Feld: Tastenfunktion "wegnehmen"

Beitrag von Michl »

Hallo, es ist zwar nicht günstig das Standartverhalten zu verändern, da es wie selbst geschrieben bei fremden Nutzern zu Missverständnissen führen kann.

Code: Alles auswählen

 
Wie kann ich es erreichen, dass das DBGrid-Feld die Enter- und die Tab-Taste "ignoriert", so dass entweder gar nichts passiert oder ich diesen Tasten mit dem "onkeydown"-Ereignis die Funktion zuordnen kann, die ich selber gerne möchte?
 
Genau wie geschrieben im "OnKeyDown"-Ereignis. Einfach fragen wann Enter gedrückt wurde (Key=13), dann das eigene Verhalten auslösen. Dananch Key:=0, da sonst immer noch das "Enter"-typische Verhalten ausgelöst wird.

Code: Alles auswählen

 
Eigenartigerweise hat die "Alt-Taste" ein "Eigenleben". Manchmal erscheinen in Textfeldern eigenartige Zeichen (Herzchen, Kreuze) nach Betätigen eines Shortcuts, der mit der Alt-Taste verknüpft ist.
Wie kommt das?
 
Das kommt wahrscheinlich ebenfalls daher, dass zwar die Abfrage, ob "Strg" oder "Alt" gedrückt wurde, doch "Key" danach nicht gelöscht wird. Daher wird das Standartverhalten vom Programm weiter ausgeführt, also werden bei machen Befehlen Sonderzeichen geschrieben.

Michl

Code: Alles auswählen

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

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: DBGrid-Feld: Tastenfunktion "wegnehmen"

Beitrag von Aliobaba »

Hallo Michl,

Danke!! Funktioniert tadellos :)
Ich dachte, das "Enter-typische Verhalten" hätte Priorität.

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: DBGrid-Feld: Tastenfunktion "wegnehmen"

Beitrag von Socke »

Aliobaba hat geschrieben:Weitere Frage:
Ich möchte ein Programm mit Tastatur-Short-Cuts anreichern; es müssen viele Shortcuts implementiert werden, da ich von einer blinden Benutzerin gebeten worden bin, mein Programm "MyMemoryDB" für Blinde nutzbar zu machen.

Code: Alles auswählen

 
     If (ssCtrl in Shift) then  if Key=Ord('V') then   DBMemoText.PasteFromClipboard;
     If (ssCtrl in Shift) then  if Key=Ord('C') then   DBMemoText.CopyToClipboard;
 
     If (ssAlt in Shift) And (Key=Ord('O')) then Form2.TextOderverknuepfung;
     If (ssAlt in Shift) And (Key=Ord('E')) then Form2.ErweiterteSWSuche;
     If (ssAlt in Shift) And (Key=Ord('N')) then Form2.Neues_Schlagwort;
     If (ssAlt in Shift) And (Key=Ord('M')) then Form2.Schlagwort_aendern;
 
Schau dir doch mal auf dem "Standard"-Tab die Komponente TActionList an. Darüber erstellst du einzelne Aktionen. Diese erhalten einen Ereignisbehandler (OnExecut), GUI-Eigenschaften und auch einen Short-Cut. Danach weist du deinen Steuerelementen in der Eigenschaft "Action" die passende Aktion zu.

TActionList kann man auch auf ein Datenmodul legen und somit in verschiedenen Formularen verwenden und auch auf diese Formulare zugreifen.
(Soweit die Theorie)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten