Einzelnen Beitrag anzeigen

Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#1

Scroll-Tastaturereignis in Listbox abfagen

  Alt 10. Mär 2008, 15:53
Hallo zusammen!

Ich will eine Item-Tauschen Funktion in eine Listbox
implementieren, wenn der User STRG+Pfeiltaste drückt.

Dazu überschreibe ich OnKeyUp und fange die Tasten
mit VK_UP und VK_DOWN ab.

Wie sich herausstellt, ist zu diesem Zeitpunkt jedoch
schon der ItemIndex ebenfalls weitergerückt, so dass
ich keine Item-Welchsel-Dich Sache einbauen kann.



Delphi-Quellcode:
procedure TAdvListBox.KeyUp(var Key: Word; Shift: TShiftState);
begin
  case Key of
    { Item-Position vertauschen }
    VK_UP: If ssCtrl in Shift then DoMoveItem(ItemIndex+1, -1);
    VK_DOWN: If ssCtrl in Shift then DoMoveItem(ItemIndex-1, +1);
   else
    inherited KeyUp(Key, Shift);
  end;
end;

Der Methode DoMoveItem gebe ich aktuelle mit ItemIndex +1 / -1
den vorherigen ItemIndex mit -- aber natürlich funktioniert
dass nicht, wenn der ItemIndex am Anfang oder Ende steht.

Ich komme also nicht umhin, den echten ItemIndex kurz
nach dem Drücken der Pfeiltasten auszulesen, noch bevor
der ItemIndex in der Listbox aktualisiert wird.


Wisst ihr, wie ich das bewerkstelligen kann?



Dank und Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat