Em 3/7/2009 15:25, Felipe Milagres escreveu: > o codigo eu tirei dakele link, segue ele abaixo: > procedure TForm1.Button1Click(Sender: TObject);var I: > Integer; fAlertaMsn: TForm; BarraIniciar: HWND; {Barra > Iniciar} tmAltura: Integer; tmRect: TRect; xTop : Integer; xIniTop : > Integer;begin //localiza o Handle da janela iniciar BarraIniciar := > FindWindow('Shell_TrayWnd', nil); //Pega o "retângulo" que envolve a > barra e sua altura GetWindowRect(BarraIniciar, tmRect); tmAltura := > tmRect.Bottom - tmRect.Top; fAlertaMsn := > TfAlertaMsn.Create(Self); with fAlertaMsn do begin Left := > Screen.Width - ClientWidth; if tmRect.Top = -2 then tmAltura := > 30; //Pega o top final xTop := Screen.Height - ClientHeight - > tmAltura; //Pega o top inicial xIniTop := Screen.Height + > ClientHeight + tmAltura; Top := xIniTop; for I := xIniTop downto > xTop do begin Top := Top - 1; Show; Update; > Application.ProcessMessages; > Sleep(10); end; Sleep(3000); Close; > FreeAndNil(fAlertaMsn); end;end;
Engraçado, tirei o Show (deixei antes do loop) e o Update do loop dessa código doido e foi de primeira, mudei o Close para fAlertaMsn.Close (queria que só a jenelinha fechace e não o projeto), e deixando o Free viu. Funciona primeira e não dá uma mísera mensagem de erro, exceto se eu tirar o Free, meu FastMM4 grita sobre o memory leak na hora (conta até quantos fAlertaMsn ficaram na caca da CPU :) ). Quem quiser usar algo do tipo acima pense em TThread, ajuda um bocado não deixando o projeto "congelado". -- []'s, Silvio Clécio --- Linux User: #481900 Gmail, GTalk: silviop...@gmail.com E-mail, Y! Messenger: silviop...@yahoo.com.br BlogSite: http://silvioprog.blogspot.com/ BlogSpot: http://silvioclecio.blogspot.com/ VirtualDriver: http://silvioprog.4shared.com/ °oO| Seja livre, use Linux! |Oo°