Messenger
Como posso fazer um formulário vibrar, como ocorre no MSN Messenger quando alguém quer chamar atenção? Para quem gosta de colocar efeitos especiais (e inúteis) no formulário, esta é uma excelente dica:
uses Windows
procedure WindowShake(wHandle: THandle);
const
MAXDELTA = 4;
SHAKETIMES = 500;
var
oRect, wRect :TRect;
deltax: integer;
deltay: integer;
cnt: integer;
dx, dy: integer;
begin
//lembre da posição original
GetWindowRect(wHandle,wRect);
oRect := wRect;
Randomize;
for cnt := 0 to SHAKETIMES do
begin
deltax := Round(Random(MAXDELTA));
deltay := Round(Random(MAXDELTA));
dx := Round(1 + Random(2));
if dx = 2 then
dx := -1;
dy := Round(1 + Random(2));
if dy = 2 then
dy := -1;
OffsetRect(wRect,dx * deltax, dy * deltay);
MoveWindow(wHandle, wRect.Left,wRect.Top,wRect.Right -
wRect.Left,wRect.Bottom - wRect.Top,true);
end;
//returna à posição de início
MoveWindow(wHandle, oRect.Left,oRect.Top,oRect.Right -
oRect.Left,oRect.Bottom - oRect.Top,true);
end;
Adicione o código em um botão, por exemplo:
procedure TForm1.Button1Click(Sender: TObject);
begin
WindowShake(Application.MainForm.Handle)
end;
Walter Alves Chagas Junior