Registriert seit: 12. Mär 2003
Ort: Geesthacht
138 Beiträge
Delphi 5 Professional
|
Re: Message innerhalb einer Klasse ???
16. Mär 2005, 11:22
Hier der Code, wie ich diesen momentan benutze:
Delphi-Quellcode:
unit UHotKey;
interface
uses messages, Windows, classes, controls;
const
MOD_CONTROL = 2;
type THotkeyEvent = procedure of object;
type THotKey = class (TWinControl)
private
FOnHotKey: THotkeyEvent;
iHotkeyID: Integer;
sName1, sKey1 : String;
procedure SetOnHotKey(Value: THotkeyEvent);
public
constructor create(sName, sKey : String; AOwner : TComponent);
destructor destroy;
procedure WMHotKey( var Msg: TWMHotKey); message WM_HOTKEY;
procedure CreateWnd; override;
published
property onHotKeyEvent: THotKeyEvent read FOnHotKey write SetOnHotKey;
end;
implementation
{ THotKey }
//speichert die Werte
constructor THotKey.create(sName, sKey: String; AOwner : TComponent);
begin
Inherited Create(AOwner);
sName1 := sName;
sKey1 := sKey;
end;
//Registriere Hotkey (nur in Verbindung STRG + Key)
procedure THotKey.CreateWnd;
begin
inherited CreateWnd;
iHotKeyID := GlobalAddAtom(PChar(sName1));
RegisterHotKey(self.handle, iHotKeyID, MOD_CONTROL, Ord(sKey1[1]));
end;
//Deregistriert den HotKey
destructor THotKey.destroy;
begin
UnRegisterHotKey(self.handle, iHotKeyID);
Inherited Destroy;
end;
//Beim Laden wird eine Methode zum Ereignis festgelegt
procedure THotKey.SetOnHotKey(Value: THotkeyEvent);
begin
FOnHotKey := Value;
end;
//Message, die Nachricht bekommt, dass der HotKey gedrückt wurde und diese löst
//dann das Ereignis aus.
procedure THotKey.WMHotKey( var Msg: TWMHotKey);
begin
if Msg.HotKey = iHotkeyId
then
if Assigned(FOnHotKey)
then FOnHotKey;
end;
end.
Ulrich Strauer
|
|
Zitat
|