与类对象事件的onResize
题
下面的是我的代码:
type TNav = class(TPanel)
private
procedure CMMouseEnter(var AMsg: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var AMsg: TMessage); message CM_MOUSELEAVE;
public
end;
type TForm1 = class(TForm)
...
procedure FormCreate(Sender: TObject);
private
public
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with TNav.Create(Form1) do begin
Parent := Self;
Name := 'nav';
Top := 0;
Left := 0;
Height := 27;
Width := Form1.Width - 8;
Visible := true;
Caption := '';
end;
end;
procedure TNav.CMMouseEnter(var AMsg: TMessage);
begin
Self.Top := 0;
end;
procedure TNav.CMMouseLeave(var AMsg: TMessage);
begin
Self.Top := -23;
end;
有一种方法来添加一个事件的onResize为我TNav,或甚至从Form1中发送的宽度/高度值?
感谢你在前进!
解决方案
你想一个“onResize受到”处理程序添加到TNav
(内部)的每一个实例,或者你只是想TNav
显示OnResize
事件,以便可以将其设置在应用程序?在第一种情况下,只是做
type
TNav = class(TPanel)
private
procedure CMMouseEnter(var AMsg: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var AMsg: TMessage); message CM_MOUSELEAVE;
protected
procedure Resize; override;
public
end;
和
procedure TNav.Resize;
begin
inherited;
// Do something
end;
在后一种情况下,只要添加
published
property OnResize;
要访问父形式的属性(如果有的话),在TNav
类做(例如)
GetParentForm(Self).Width
顺便说一句,你知道Anchors
的TPanel
财产?添加TPanel
的形式,并设置Anchors := [akLeft,akTop,akRight]
属性编辑器中。这是东西,你可以使用?
不隶属于 StackOverflow