Hallo Mazel,
die Variablen
ShortCut und
Modifier in meinem Beispielcode waren lediglich der Ersatz für deine ListView. Du wirst diese Variablen in deinem Programm nicht benötigen.
Bei der Übernahme eines Hotkeys (in der Routine
BtnOKHotkeyClick) speicherst du den Text des Hotkeys in SubItems[0] ab. Die Werte von
EditHotkey.HotKey und
EditHotkey.Modifiers mußt du ebenfalls im Listeneintrag ablegen, damit du sie bei einem späteren Klick auf den Eintrag wieder in das THotkey-Control übertragen kannst. Den 16-Bit-Hotkey und den 8-Bit-Modifier kannst du dazu in einen 32-Bit-Wert packen und anschließend im Feld TListItem.Data ablegen:
Delphi-Quellcode:
// ListItem sei das markierte Element in der ListView
with EditHotkey do
ListItem.Data := Pointer(MakeLong(Byte(Modifiers), Hotkey));
Nach dem Klick auf einen Listeneintrag müssen die Werte wieder extrahiert und in das THotkey-Control übertragen werden:
Delphi-Quellcode:
// ListItem sei das angeklickte Element in der ListView
with EditHotkey do
begin
Hotkey := HiWord(Cardinal(ListItem.Data));
Modifiers := THKModifiers(LoByte(ListItem.Data));
end;
Wichtig ist also, daß du für
jeden Eintrag in der ListView die zugehörigen Werte für HotKey und Modifiers speicherst.
Gruß Hawkeye