Zitat von
Jens Schumann:
Das wird nichts bringen, denn wenn der Button disabled ist (also enabled=false) dann findet kein MouseEnter statt.
Ich würde das so lösen :
Im FormMouseMove (genauer gesagt im MouseMove des übergeordneten Objektes) prüfen, ob der Cursor auf den Button zeigt und, wenn ja Button.Enabled = True setzen.
Im TButton.CMMouseLeave enabled = false setzen.
Delphi-Quellcode:
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TButton=Class(StdCtrls.TButton)
private
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
end;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TButton.CMMouseLeave(var Message: TMessage);
begin
Enabled:=false;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if PtInRect(Button1.BoundsRect,Point(x,y)) then Button1.Enabled:=true;
end;
end.