حدث 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