![]() |
THotkey wird nicht erkannt
Hallo, ich benötige für ein Tool eine Hotkeyfunktion, welche bisher so aussieht:
Delphi-Quellcode:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, hotkey, Shellapi, ComCtrls; type TForm1 = class(TForm) DemoHotKey: THotKey; private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.nfm} procedure EvtHotkey(Sender: TObject; Name: string); begin if Name = 'Demosave' then { Save_demo(); } end; procedure erzeugen; var fHKManager: THotkeyManager; begin fHKManager := THotkeyManager.Create; [b]fHKManager.Hotkeys['Demosave'].Hotkey := DemoHotKey.HotKey; // <--das mag er irgendwie nicht [/b] fHKManager.Hotkeys['Demosave'].Hotkey := HKey; // HKey ist vom Typ TShortCut fHKManager.Hotkeys['Demosave'].OnHotkey := EvtHotkey; fHKManager.Hotkeys['Demosave'].RegisterHotkey; end; die unit hotkey stammt von Christopher aka Chakotay und der bereich mit dem fHKManager sieht so aus:
Delphi-Quellcode:
Das Problem ist jetzt, dass ich eine Komponente THotKey mit dem Namen DemoHotKey hinzugefügte habe aber der Debugger meint, dass "DemoHotKey" nicht deklariert ist :-/
THotkeyManager = class(TObject)
private fCollection: TmxJsCollection; function GetHotkeys(const Name: string): THotkeyItem; public constructor Create; destructor Destroy; override; property Collection: TmxJsCollection read fCollection; property Hotkeys[const Name: string]: THotkeyItem read GetHotkeys; function AddHotkey(Name: string; Hotkey: TShortCut; RegisterHK: boolean = true): integer; procedure DeleteHotkey(Name: string); overload; procedure DeleteHotkey(Index: integer); overload; end; Kann mir jemand sagen, wo mein Fehler liegt? :mrgreen: |
Re: THotkey wird nicht erkannt
Hi,
du musst deine Prozeduren, die du hast als Methoden des Formulars deklarieren oder der Prozedur sagen, dass die Komponente auf deinem Formular liegt. Bei ersterem sieht das so aus (Änderung fett hervorgehoben):
Code:
Die andere Möglichkeit sieht so aus:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, hotkey, Shellapi, ComCtrls; type TForm1 = class(TForm) DemoHotKey: THotKey; private [b]procedure EvtHotkey(Sender: TObject; Name: string);[/b] public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.nfm} procedure [b]TForm1[/b].EvtHotkey(Sender: TObject; Name: string); begin if Name = 'Demosave' then { Save_demo(); } end; procedure [b]TForm1.[/b]erzeugen; var fHKManager: THotkeyManager; begin fHKManager := THotkeyManager.Create; fHKManager.Hotkeys['Demosave'].Hotkey := DemoHotKey.HotKey; // <--das mag er irgendwie nicht fHKManager.Hotkeys['Demosave'].Hotkey := HKey; // HKey ist vom Typ TShortCut fHKManager.Hotkeys['Demosave'].OnHotkey := EvtHotkey; fHKManager.Hotkeys['Demosave'].RegisterHotkey; end;
Code:
(Statt Form1 kannst du auch TForm1 nehmen, für dich (!) sollte es da keinen Unterschied geben)
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, hotkey, Shellapi, ComCtrls; type TForm1 = class(TForm) DemoHotKey: THotKey; private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.nfm} procedure EvtHotkey(Sender: TObject; Name: string); begin if Name = 'Demosave' then { Save_demo(); } end; procedure erzeugen; var fHKManager: THotkeyManager; begin fHKManager := THotkeyManager.Create; fHKManager.Hotkeys['Demosave'].Hotkey := [b]Form1.[/b]DemoHotKey.HotKey; // <--das mag er irgendwie nicht fHKManager.Hotkeys['Demosave'].Hotkey := HKey; // HKey ist vom Typ TShortCut fHKManager.Hotkeys['Demosave'].OnHotkey := EvtHotkey; fHKManager.Hotkeys['Demosave'].RegisterHotkey; end; Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 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