ورود

View Full Version : روش اجرای یک پروسیجر



khoshblagh
چهارشنبه 09 دی 1388, 08:02 صبح
با سلام خدمت دوستان
من از سایت about یک پروسیجر جهت لرزش فرمmain form بدست آوردم ولی روش فراخوانی آنرا در برنامه نمیدانم. لطفا در این مورد راهنمایی نمائید. متشکرم


procedure WindowShake(wHandle: THandle) ;
const
MAXDELTA = 4;
SHAKETIMES = 500;
var
oRect, wRect :TRect;
deltax : integer;
deltay : integer;
cnt : integer;
dx, dy : integer;
begin
//remember original position
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;
//return to start position
MoveWindow(wHandle, oRect.Left,oRect.Top,oRect.Right - oRect.Left,oRect.Bottom - oRect.Top,true) ;
end;

Felony
چهارشنبه 09 دی 1388, 08:15 صبح
اگر دقت کنید ورودی روال THandle هست که معناش این هست که به هندل فرم مورد نظر احتیاج داره ، پس باید به صورت زیر فراخوانی بشه :


WindowShake(Form1.Handle);

ولی کد رو زیاد کش داده ، من کد رو مطالعه نکردم ببینم چی کار میکنه ولی خودم یه تکه کد نوشتم برای لرزش فرم که 7 خط شد :


var
i: Integer;
A,B: TPoint;
begin
//
// Get current position of form
A.X:= Form1.Top;
A.Y:= Form1.Left;
// Shake form
for i:= 0 to 5000 do
if i mod 2 = 0 then
MoveWindow(Form1.Handle,A.Y,A.X,Form1.Width,Form1. Height,True)
else
MoveWindow(Form1.Handle,A.Y + 7,A.X + 7,Form1.Width,Form1.Height,True)