Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi listbox tastatur Ereignis (https://www.delphipraxis.net/50821-listbox-tastatur-ereignis.html)

quasinix 1. Aug 2005 13:50


listbox tastatur Ereignis
 
Hallo,
ich möchte bei einer Listbox verschiedene Tastaturbefehle einbauen. Hierfür benutze ich das OnKeyDown-Ereignis der Listbox. Mit den Funktionstasten klappt das auch ganz wunderbar (zumindest bis F9).

Wenn ich aber z.B. versuche irgendeine Zahlentaste zu benutzen springt die Listbox immer automatisch zu der Zeile die mit der getippten Zahl anfängt.

Kann man irgendwie die diese voreingestellten Tastenereignisse ausschalten? Muss ich ein anderes Ereignis nehmen?

Viele Grüße

Quasinix

Kompon Ente 1. Aug 2005 13:53

Vielleicht, indem du den Focus disablest? Sonst kA

quasinix 1. Aug 2005 14:07

Re: listbox tastatur Ereignis
 
Hallo Janosch,
danke für die schnelle Antwort.

Wenn ich den Focus desable kann ich reagiert die listbox auch nicht mehr auf Tastaturereignisse?!

Gruß

Quasinix

quasinix 1. Aug 2005 14:50

Re: listbox tastatur Ereignis
 
Hallo nochmal,
ich habe gerade eine Lösung gefunden die etwas gefummelt ist.

Und zwar habe ich herausgefunden, dass sich der itemindex bei dem Ereignis OnKeyDown noch nicht geändert hat. Bei dem Ereignis OnKeyUp hat er sich aber geändert. Meine Lösung:

1. beim OnKeyDown-Ereignis den itemindex in eine globale Variable schreiben.
2. beim OnKeyUp-Ereignis den in der globalen Variable gespeicherten itemindex wieder zurückschreiben.

Nachteil: Die Markierung in der Listbox flippert zuerst zu dem automatisch selektierten itemindex und nach dem OnKeyUp-Ereignis wieder zu dem entsprechenden alten itemindex.

Wenn jemand eine bessere Lösung hätte (oder eine Idee wie ich die Methode verfeinern könnte) währe ich sehr froh.

Viele Grüße

Quasinix

Lannes 1. Aug 2005 15:00

Re: listbox tastatur Ereignis
 
Hallo,

nimm das onKeyPress-Event:
Delphi-Quellcode:
if key in ['0'..'9'] then
  begin
  showmessage(key);//irgendwas ausführen
  key := #0;//Taste unterdrücken
  end;

quasinix 1. Aug 2005 15:05

Re: listbox tastatur Ereignis
 
Hallo Lanes,

das
Delphi-Quellcode:
key := #0;//Taste unterdrücken
war genau das was ich gesucht habe. :idea:


Vielen Dank
Quasinix


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 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