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 или даже отправлять значения ширины / высоты из формы1?
Заранее спасибо!
Решение
Вы хотите добавить обработчик «OnreSize» для каждого экземпляра TNav
(внутренне) или вы просто хотите TNav
отображать A. 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