ورود

View Full Version : سوال: ایجاد وقفه در رفتن به خط بعدی



loo30fer
جمعه 07 مرداد 1390, 16:14 عصر
با سلام
من میخوام قبل از اجرا شدن خط بعدی که مثلا تابع ShowMessage هست 2 ثانیه وقفه ایجاد کنم برای همین اومدم از تابع Sleep استفاده کردم که این باعث میشه برنامه برای دو ثانیه فریز بشه البته فریز که نه Disable میشه حالا میخوام بدونم تابع دیگری برای اینکار وجود داره که در هنگام ایجاد وقفه برنامه Disable نشه البته میدونم که از Timer هم میتونم استفاده کنم ولی من دنبال یک تابع میگردم. ممنون میشم راهنمایی کنید. با تشکر

MohsenB
جمعه 07 مرداد 1390, 16:36 عصر
سلام

اگر تو نت بگردید روشهایی پیدا می کنید که از یه حلقه که مدام یه کد آپدیت برنامه رو اجرا میکنه تا یه مدت بگذره پیدا می کنید .

ولی به نظر من روش درستی نیست . بهتره اون کدی رو که میخواید وقفه داشته باشه رو تو یه سرنخ قرار بدین ، حالا اگه یه حلقه هم توش باشه برنامتون گیر نمیکنه و در ضمن میتونید توش از دستور بالا هم استفاده کنید .

یوسف زالی
جمعه 07 مرداد 1390, 16:53 عصر
سلام.
این روش رو تست کنید.
for i := 1 to 10 do
begin
sleep(200); // 200 milisecond
application.processmessage;
end;

شاید روش های بهتری هم باشه.

hdnsoft
یک شنبه 22 بهمن 1391, 11:37 صبح
سلام
در روشی که شما در بالا اشاره کردید بازهم کل برنامه به حالت غیر فعال میره ! راهکار بهتری نیست ؟

samani
یک شنبه 22 بهمن 1391, 14:24 عصر
procedure TForm1.Button1Click(Sender: TObject);
var
t: Cardinal;
begin
Memo1.Lines.Add('Start: ' + TimeToStr(Time));
t := GetTickCount;
while GetTickCount - t <= 5000 do //5 Second
Application.ProcessMessages;

Memo1.Lines.Add('Stop: ' + TimeToStr(Time));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage('Test message')
end;

BORHAN TEC
یک شنبه 22 بهمن 1391, 15:23 عصر
سلام
جناب samani کد شما یک مشکل داره و اونم اینه که موقعی که کد موجود در Button1 در حال اجرا است اگر بخواهیم برنامه را ببندیم با مشکل مواجه خواهیم شد. از دیدگاه اینجانب روشی که در پست شماره 11 تاپیک زیر وجود دارد روش بهتری است چرا که این مشکل یاد شده را ندارد:
http://barnamenevis.org/showthread.php?380613
موفق باشید...