![]() |
Re: Namen der virtuellen Tastencodes
Hi,
ich habe jetzt mal versucht das ganze umzusetzen, leider habe ich kein großen Erfolg:
Delphi-Quellcode:
Ist das so wie du es gemeint hast?
procedure TForm7.ListViewClick(Sender: TObject);
// Klick auf das ListView begin EditHotkey.HotKey:=ShortCut; EditHotkey.Modifiers:=Modifier; Edit1Action.Text:=ListView.Selected.Caption; EditHotkey.HotKey:=TextToShortCut(ListView.Selected.SubItems[0]); end; procedure TForm7.BtnOKHotkeyClick(Sender: TObject); // das zurückschreiben in die ListView begin ListView.Items[ListView.Selected.Index].SubItems[0]:=UpperCase(ShortCutToText(EditHotkey.HotKey)); ShortCut:=EditHotkey.HotKey; Modifier:=EditHotkey.Modifiers; EditHotkey.Modifiers:=[]; EditHotkey.HotKey:=0; end; procedure TForm7.FormCreate(Sender: TObject); // beim Erzeugen der Form begin ShortCut:=EditHotkey.HotKey; Modifier:=EditHotkey.Modifiers; EditHotkey.Modifiers:=[]; EditHotkey.HotKey:=0; end; Gruß Mazel |
Re: Namen der virtuellen Tastencodes
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:
Nach dem Klick auf einen Listeneintrag müssen die Werte wieder extrahiert und in das THotkey-Control übertragen werden:
// ListItem sei das markierte Element in der ListView
with EditHotkey do ListItem.Data := Pointer(MakeLong(Byte(Modifiers), Hotkey));
Delphi-Quellcode:
Wichtig ist also, daß du für jeden Eintrag in der ListView die zugehörigen Werte für HotKey und Modifiers speicherst.
// ListItem sei das angeklickte Element in der ListView
with EditHotkey do begin Hotkey := HiWord(Cardinal(ListItem.Data)); Modifiers := THKModifiers(LoByte(ListItem.Data)); end; Gruß Hawkeye |
Re: Namen der virtuellen Tastencodes
Hi,
danke, nun funktioniert es so wie es soll. Ich muss jetzt nur noch eine einfache Routine zum Speichern und Laden entwerfen aber wie gesagt es funktioniert. Echt super :thumb: . Wenn ich schon früher mit der Komponente Hotkey gearbeitet hätte, würde ich jetzt hier nicht die Fragen stellen, ich bin dir sehr dankbar. Gruß Mazel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz