Tframe onshow onhide

Contenu du snippet

Bonjour,

Après de pénible recherche, j'ai découvert comment obtenir un équivalent de OnShow / OnHide d'une TForm sur une TFrame.

Ce n'est pas intuitif donc j'en profite pour vous le partager.

Source / Exemple :


uses
  Forms, Dialogs, Classes, Controls, StdCtrls, Windows, Messages;

type
    
  MaFrame = class(TFrame)
  private
    _OnShow : TNotifyEvent;
    _OnHide : TNotifyEvent;
    
    procedure _SetOnShow(ponshow: TNotifyEvent);
    procedure _SetOnHide(ponhide: TNotifyEvent);
    
    procedure FrameOnShowHide(var M: TMessage); message CM_SHOWINGCHANGED;
  published
    property OnShow : TNotifyEvent write _SetOnShow;
    property OnHide : TNotifyEvent write _SetOnHide;
  end;

implementation

procedure MaFrame._SetOnShow(ponshow: TNotifyEvent);
begin
  _OnShow := ponshow;  
end;

procedure MaFrame._SetOnHide(ponhide: TNotifyEvent);
begin
  _OnHide := ponhide;  
end;

procedure MaFrame.FrameOnShowHide(var M: TMessage);
begin
  inherited;
  
  if Showing then // onShow
    if Assigned( _OnShow ) then
      _OnShow( Self )
  else // onHide
    if Assigned( _OnHide ) then
      _OnHide( Self );
end;

Conclusion :


Voila, c'est pas grand chose et ça peut être utile.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.