PDA

View Full Version : سوال: مشکل در ترتیب اجرای رویدادهای فرم



Nima_kyan
یک شنبه 06 اسفند 1391, 12:26 عصر
سلام
من یه سری محاسبات نسبتا طولانی (بین 2 تا 5 دقیقه) رو میخوام وقتی فرمم لود میشه بدست بیارم ولی میخوام فرم و مثلا یه لیبل "در حال پردازش.." رو روی فرمم نشون بده تا نتیجه نهایی محاسباتم بدست بیاد.
من کدم رو تو رویداد Form_Load و یا Form_Active قرار میدم. مثلا به این شکل:


procedure TFrmDetails.FormShow(Sender: TObject);
begin
Label9.Caption:='در حال پردازش...';
//انجام محاسبات
Label9.Caption:='';
end;

ولی لیبل رو نشون نمیده تا وقتی که محاسباتش تکمیل شه.(یعنی فرم تقریبا تو حالت هنگ کردن میمونه تا محاسبات تموم شه)
ممنون میشم کمک کنید

یوسف زالی
یک شنبه 06 اسفند 1391, 13:07 عصر
سلام.
از یک تایمر کمک بگیرید.
تایمر رو در فرم شو آن کنید و در رویداد خودش آف کنید.

gholami146
یک شنبه 06 اسفند 1391, 16:13 عصر
بهتر نیست این دستورات رو در فرم شو ONShow بگذارید

0armin0
جمعه 18 اسفند 1391, 19:08 عصر
سلام
من یه سری محاسبات نسبتا طولانی (بین 2 تا 5 دقیقه) رو میخوام وقتی فرمم لود میشه بدست بیارم ولی میخوام فرم و مثلا یه لیبل "در حال پردازش.." رو روی فرمم نشون بده تا نتیجه نهایی محاسباتم بدست بیاد.
من کدم رو تو رویداد Form_Load و یا Form_Active قرار میدم. مثلا به این شکل:


procedure TFrmDetails.FormShow(Sender: TObject);
begin
Label9.Caption:='در حال پردازش...';
//انجام محاسبات
Label9.Caption:='';
end;

ولی لیبل رو نشون نمیده تا وقتی که محاسباتش تکمیل شه.(یعنی فرم تقریبا تو حالت هنگ کردن میمونه تا محاسبات تموم شه)
ممنون میشم کمک کنید


قبل از انجام محاسبات این کد رو بنویس
Application.ProcessMessages



حین انجام محاسبات هم بنویسی برنامه هنگ نمیکنه

alaveh
شنبه 19 اسفند 1391, 02:45 صبح
سلام

من همین مشکل رو داشتم

وقتی محاسبات سنگینه فرم هنگ میکنه ولی با کد زیر من تونستم محاسبه نزدیک به 40 ساعت رو انجام بدم و هنگ هم نکنه .


Form1.Refresh;

وقتی فرم رو ریفرش کنی از اون حالت هنگ بودن در میاد . به شکل زیر باید کارت راه بیفته .


procedure TFrmDetails.FormShow(Sender: TObject);
begin
Label9.Caption:='در حال پردازش...';
FrmDetails.Refresh;

//انجام محاسبات
Label9.Caption:='';
end;