C++ Listview: Tastatureingabe bei OnKeyPress funktioniert nicht richtig

epifx

Cadet 3rd Year
Registriert
Mai 2014
Beiträge
36
Hallo,
ich habe ein Problem mit einer Listview-Komponente.
Und zwar möchte ich, die Methode OnKeyPress nutzen, um mittels einer Tastatureingabe einen Eintrag zu ändern.
Ich möchte die Werte 1 bis 5 in einer Spalte vergeben können (als Rating einer Bilderliste) und danach automatisch zum nächsten Eintrag wechseln.

Wenn ich jetzt die Tasten 1 bis 5 verwende (normaler Tastaturbereich, nicht rechter KeyPad), bekomme ich bei den Tasten 1 bis 3 ein undefiniertes Verhalten. Der automatische Wechsel zum nächsten Eintrag geht nicht, bei 1 springt man immer auf den obersten Eintrag zurück. Wenn ich dagegen die Tasten a s d f g nutze, geht alles einwandfrei.

Haben die Tasten 1 bis 3 irgendwelche mir nicht bekannten Hotkey-Eigenschaften?
Vielleicht kennt ja zufällig jemand dieses Problem.

epifx

P.S.: Ich verwende immer noch den alten Borland C++ Builder 5, weil mir dieser Compiler vollkommen ausreicht.
Das Problem tritt bei XP und bei W7 64 auf.
 
der Borland C++ Builder 5 ist aus dem Jahr 2000
da kann durchaus ein Bug drinnen sein der halt niemals gefixt wurde, weil es eh bereits updates gibt.

Alternative wie MS Visual Studio Desktop sind auch Gratis und für einfache Versionen durchaus ausreichend.


Zurück zu deinen Fehler:
vielleicht kannst du auf die onkeypress verzichten und schon vorher im Messagehandler des Parentwindows das behandeln?
 
Ich habe auf alle Fälle den Fokus auf der Listview-Komponente, weil ich vor dem Tastendruck das Listenelement selektiere (also auf "highlight" setze), welchem der Wert 1 bis 5 zugewiesen werden soll.

Komme ich da einfach an den Messagehandler des Parentwindows heran? Geht da eventuell etwas über die ShortCut-Funktion?

Was ich auf alle Fälle noch probieren kann, ist eine andere OnKey-Routine, ich meine, es gibt auch noch ein OnKeyDown, welche die gedrückte Taste übergibt. Vielleicht hilft ja das.

epifx
Ergänzung ()

So, ich konnte das Problem jetzt lösen. Mit einer ActionList im Parentwindow und zugewiesenen ShortCuts geht es.
Die ShortCut-Ausführung ist offensichtlich "stärker" als das parasitäre Verhalten der Tasten 1 bis 3 bzw. fängt die Aktion dieser Tasten vorher ab.

Danke für deinen Input, er hat mich in die richtige Richtung gelenkt!

epifx
 
Zuletzt bearbeitet:
Zurück
Oben