クラスオブジェクトを使用してイベントを紹介します
質問
これが私のコードです:
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;
私のTNAVにOnResizeイベントを追加する方法、または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
? Aを追加します TPanel
フォームに、設定します Anchors := [akLeft,akTop,akRight]
プロパティエディターで。これはあなたが使用できるものですか?
所属していません StackOverflow