procedure TForm1.ComboBox1Enter(Sender: TObject); var vHandle: HRGN; begin with Combobox1 do begin vHandle := CreateRectRgn(0, 0, width, height); SetWindowRgn(Handle, vHandle, True); end; end;procedure TForm1.ComboBox1Exit(Sender: TObject); var vHandle: HRGN; begin with Combobox1 do begin vHandle := CreateRectRgn(0, 0, width-20, height); SetWindowRgn(Handle, vHandle, True); end; end;
var
vHandle: HRGN;
begin
with Combobox1 do
begin
vHandle := CreateRectRgn(0, 0, width, height);
SetWindowRgn(Handle, vHandle, True);
end;
end;procedure TForm1.ComboBox1Exit(Sender: TObject);
var
vHandle: HRGN;
begin
with Combobox1 do
begin
vHandle := CreateRectRgn(0, 0, width-20, height);
SetWindowRgn(Handle, vHandle, True);
end;
end;
{建一个工程,一个form,放入一个button,一个combobox}
interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TCombobox = class(StdCtrls.TCombobox)
protected
procedure DoEnter; override;
procedure DoExit; override;
end;
TForm1 = class(TForm)
ComboBox1: TComboBox;
Button1: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TCombobox.DoEnter;
var
vHandle: HRGN;
begin
inherited;
form1.caption:='1';
vHandle := CreateRectRgn(0, 0, width, height);
SetWindowRgn(Handle, vHandle, True);
end;
procedure TCombobox.DoExit;
var
vHandle: HRGN;
begin
inherited;
form1.caption:='2';
vHandle := CreateRectRgn(0, 0, width-20, height);
SetWindowRgn(Handle, vHandle, True);
end;
end.
protected
procedure DoEnter; dynamic;
procedure DoExit; dynamic;
谢谢 aiirii(ari-爱的眼睛)
我是这样解决的
private
FjzlOnEnter: TNotifyEvent;
FjzlOnExit: TNotifyEvent;
procedure MyEnter(Sender: TObject);
procedure MyExit(Sender: TObject);
public
constructor Create(AOwner: TComponent);overried;
end;create...
begin
Inherited Create(AOwner);
FjzlOnEnter := self.OnEnter;
FjzlOnExit := self.OnExit;
OnEnter := MyEnter;
OnExit := MyExit;
end;
MyEnter...
var
vHandle: HRGN;
begin
vHandle := CreateRectRgn(0, 0, width, height);
SetWindowRgn(Handle, vHandle, True);
if Assigned(FjzlOnEnter) then FjzlOnEnter(Sender);
if Assigned(FjzlOnEnter) then FjzlOnEnter(Sender);
end;
MyExit...和MyEnter相同
给分了。谢谢。