PDA

View Full Version : کنسل کردن یک عملیات



Saeid59_m
شنبه 06 بهمن 1386, 10:36 صبح
سلام
من توی یک دکمه یه حلقه For طولانی نوشت و می خواهم وقتی که روی دکمه دیگه ای روی فرم کلیک شد (دکمه کنسل) این حلقه Break بشه .
البته من توی حلقه Application.Prossmessage هم گذاشتم .
توی دکمه کنسل هم Close نوشتم .
ولی پنجره بسته نمی شه

m-khorsandi
شنبه 06 بهمن 1386, 14:24 عصر
یه متغیر Private (فرضاً) تعریف کن برای لغو عملیاتی که داری انجام میدی و قبل از شروع حلقه با False مقداردهی کن،
روی دکمه‌ی Cancel‌ مقدار True رو به اون متغیر بده و توی حلقه هم شرطی داشته باش که این متغیر رو چک کنه که اگر False بود حلقه رو ادامه بده و اگر True بود Exit کنه.

تقریباً کدی شبیه به کد زیر باید بشه:


var
iCounter: Integer;
jCounter: Integer;
Sum: Integer;
begin
CancelFlag := False;
iSum := 0;

for iCounter := 0 to 10000000 do
for jCounter := 0 to 10000000 do
if not CancelFlag then
begin
iSum := iSum + 1;
Caption := IntToStr(iSum);
Application.ProcessMessages;
end
else
Exit;