onResize événement avec objet de classe
Question
Voici mon code:
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;
Y at-il un moyen d'ajouter un événement onResize pour mon TNAV, ou même d'envoyer les valeurs largeur / hauteur de la Form1?
Merci d'avance!
La solution
Voulez-vous ajouter un gestionnaire « OnResize » à chaque instance du TNav
(interne), ou vous voulez juste l'TNav
pour afficher un événement OnResize
afin que vous pouvez le configurer dans l'application? Dans le premier cas, il suffit de
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;
et
procedure TNav.Resize;
begin
inherited;
// Do something
end;
Dans ce dernier cas, il suffit d'ajouter
published
property OnResize;
Pour accéder aux propriétés de la forme mère (le cas échéant), dans la classe TNav
faire (par exemple)
GetParentForm(Self).Width
Par ailleurs, vous êtes au courant de la propriété Anchors
de TPanel
? Ajouter un TPanel
à une forme, et dans l'ensemble Anchors := [akLeft,akTop,akRight]
éditeur de propriétés. Est-ce quelque chose que vous pouvez utiliser?