16,748
社区成员
发帖
与我相关
我的任务
分享
constructor TThread1.Create(F: TForm1);
begin
inherited Create(True);
Form := F;
end;
给TThread1加上一个私有过程DoInit():
procedure TThread1.DoInit():
begin
with Form.ADOQuery1 do
begin
close;
sql.clear;
sql.Add('select * from users');
open;
while not Eof do
begin
Form.ComboEdit1.Items.Add(Fieldbyname('name').AsString);
next;
end;
end;
end;
在TThread1的Execute写上:
procedure TThread1.Execute;
begin
Synchronize(DoInit);
end;
Unit1的implementation加上uses Unit2;
TForm1.FormCreate修改如下:
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
thread: TThread1;
begin
ProgressBar1.Visible:= True;
ProgressBar1.min:= 0; progressBar1.Max:= 100; //此处的N为总长
ProgressBar1.Value:= 0; //初始化开始位置
Thread := TThread1.Create(self);
Thread.Resume;
while not Thread.Terminated do
begin
ProgressBar1.Value:=i + 1;
end;
ProgressBar1.Visible:= False;
thread.Free;
end;
可根据实情修改ProgressBar1.Max