Felezi
سه شنبه 25 فروردین 1388, 16:23 عصر
با سلام .
من یک query نوشتم که حدود 20 جدول رو با هم ارتباط میده و همین امر باعث شده زمان open شدنش بالا بره. میخوام در زمانی که query در حال اکتیو شدن یک ProgressBar نمایش داده بشه تا کاربر بدونه که باید اندکی منتظر بشه.
سعی کردم از Thread استفاده کنم و دو thread به شکل زیر نوشتم اما نتیجه نداد. اگه ممکنه راهنمایی کنید.
type
MyThread2 = class(TThread)
IP2:Integer;
procedure ProgressM;
procedure Execute; override;
private
{ Private declarations }
public
{ Public declarations }
end;
type
MyThread3 = class(TThread)
procedure OpenT;
procedure Execute; override;
private
{ Private declarations }
public
{ Public declarations }
end;
procedure MyThread2.ProgressM();
begin
Form1.ProgressBar2.Position:=IP2;
end;
procedure MyThread2.Execute();
var
k:Integer;
begin
for k:=0 to 1000 do
begin
if IP2=100 then
IP2:=0;
IP2:=IP2+10;
Sleep(300);
Synchronize(ProgressM);
end;
end;
procedure MyThread3.OpenT();
begin
Form1.MyTable1.Active:=True;
end;
procedure MyThread3.Execute();
begin
Synchronize(OpenT);
end;
من یک query نوشتم که حدود 20 جدول رو با هم ارتباط میده و همین امر باعث شده زمان open شدنش بالا بره. میخوام در زمانی که query در حال اکتیو شدن یک ProgressBar نمایش داده بشه تا کاربر بدونه که باید اندکی منتظر بشه.
سعی کردم از Thread استفاده کنم و دو thread به شکل زیر نوشتم اما نتیجه نداد. اگه ممکنه راهنمایی کنید.
type
MyThread2 = class(TThread)
IP2:Integer;
procedure ProgressM;
procedure Execute; override;
private
{ Private declarations }
public
{ Public declarations }
end;
type
MyThread3 = class(TThread)
procedure OpenT;
procedure Execute; override;
private
{ Private declarations }
public
{ Public declarations }
end;
procedure MyThread2.ProgressM();
begin
Form1.ProgressBar2.Position:=IP2;
end;
procedure MyThread2.Execute();
var
k:Integer;
begin
for k:=0 to 1000 do
begin
if IP2=100 then
IP2:=0;
IP2:=IP2+10;
Sleep(300);
Synchronize(ProgressM);
end;
end;
procedure MyThread3.OpenT();
begin
Form1.MyTable1.Active:=True;
end;
procedure MyThread3.Execute();
begin
Synchronize(OpenT);
end;