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