Como saber se o formulário foi movimentado

Então, esses tempos eu precisava disparar um evento sempre que o formulário fosse movimentado, aí procurei no Google e achei o procedimento:

procedure WMMove(var Message: TMessage) ; message WM_MOVE;


Esta procedimento retorna mensagens do Windows e aí conseguimos obter o deslocamento de uma janela, pois no Delphi não há um evento relacionado a isso.



Exemplo de uso:


unit untFilho;


interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, dxSkinsCore, dxSkinBlue, cxLookAndFeels, dxSkinsForm;

type

  TfrmFilho = class(TForm)
  private
    { Private declarations }
    procedure WMMove(var Message: TMessage) ; message WM_MOVE;
  public
    { Public declarations }
  end;

var

  frmFilho: TfrmFilho;

implementation


{$R *.dfm}


procedure TFrmFilho.WMMove(var Message: TMessage) ;

begin
   frmFilho.Caption := Format('Formulário foi movimentado. Area x: %d, y:%d', [TWMMove(Message).XPos,TWMMove(Message).YPos]) ;
end;

end.

Para mais informações, segue alguns links:


http://docwiki.embarcadero.com/Libraries/XE2/en/Winapi.Messages.TWMMove

http://delphi.about.com/od/adptips2005/qt/formmovenotify.htm

Nenhum comentário:

Postar um comentário