Einzelnen Beitrag anzeigen

ustra

Registriert seit: 12. Mär 2003
Ort: Geesthacht
138 Beiträge
 
Delphi 5 Professional
 
#17

Re: Message innerhalb einer Klasse ???

  Alt 16. Mär 2005, 10: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
  Mit Zitat antworten Zitat