Form1.show; form1.progressbar1.value=count; for i:=1 to count begin form1.progressbar1.position:=i; form1.progressbar1.refresh; end
procedure TForm1.FormPaint(Sender: TObject); var I: Integer; begin for I := 0 to ProgressBar1.Max do begin ProgressBar1.Position := I; // 为了增强效果,加了下面这行 Sleep(10); Cursor := crHourGlass; end; Cursor := crDefault; end;
for i:=1 to count begin form1.progressbar1.position:=i; application.processmessages; end
procedure TForm1.FormPaint(Sender: TObject); var I: Integer; begin for I := 0 to ProgressBar1.Max do begin ProgressBar1.Position := I; // 为了增强效果,加了下面这行 Sleep(10); Cursor := crHourGlass; end; Cursor := crDefault; end;
mythread:=Tmythread.create(false); for i:=1 to verylargecount do begin .......................... end ; 以上for i:=1.....为主线程, 我在程序调试的时候发现程序先进入for 中执行,执行完后然后再进入线程mythread 中执行,我在execute中用了Synchronize也是如此。我想在mythread 中显示调用窗口form1 显示for i:=1 to verylargecount 的循环进度。form1.processbar1.position:=i 等for 执行完了我再统计进度已经没有意义。 请问以上是为什么?????
mythread:=Tmythread.create(false); for i:=1 to verylargecount do begin .......................... end ; 以上for i:=1.....为主线程, 我在程序调试的时候发现程序先进入for 中执行,执行完后然后再进入线程mythread 中执行,我在execute中用了Synchronize也是如此。我想在mythread 中显示调用窗口form1 显示for i:=1 to verylargecount 的循环进度。form1.processbar1.position:=i 等for 执行完了我再统计进度已经没有意义。 请问以上是为什么?????
? do呢?
form1.progressbar1.value=count;
for i:=1 to count
begin
form1.progressbar1.position:=i;
form1.progressbar1.refresh;
end
var
I: Integer;
begin
for I := 0 to ProgressBar1.Max do
begin
ProgressBar1.Position := I;
// 为了增强效果,加了下面这行
Sleep(10);
Cursor := crHourGlass;
end;
Cursor := crDefault;
end;
begin
form1.progressbar1.position:=i;
application.processmessages;
end
var
I: Integer;
begin
for I := 0 to ProgressBar1.Max do
begin
ProgressBar1.Position := I;
// 为了增强效果,加了下面这行
Sleep(10);
Cursor := crHourGlass;
end;
Cursor := crDefault;
end;
无法对窗口中对象进行操作!!!!、更怪的是连窗口中的label1.caption 的文本也无法显示,我用线程实现也不成, 我在线程的execute 中加入form1.visible:=ture; 然后在for 循环前加入mythread:=Tmythread.create(true); 也无法同步显示窗口。请问高手如何解决。
切记,不能把让主线程很忙的代码放在主线程中,否则主线程根本无法响应你的同步刷新。
begin
form1.progressbar1.position:=i;
........................
application.ProcessMessages; //不用线程,加入此句即可。
end
--for 中先用progressbar.update再用application.progressmessage一般可以解决问题
application.ProcessMessages;
for i:=1 to verylargecount do
begin
..........................
end ;
以上for i:=1.....为主线程,
我在程序调试的时候发现程序先进入for 中执行,执行完后然后再进入线程mythread 中执行,我在execute中用了Synchronize也是如此。我想在mythread 中显示调用窗口form1 显示for i:=1 to verylargecount 的循环进度。form1.processbar1.position:=i 等for 执行完了我再统计进度已经没有意义。 请问以上是为什么?????
for i:=1 to verylargecount do
begin
..........................
end ;
以上for i:=1.....为主线程,
我在程序调试的时候发现程序先进入for 中执行,执行完后然后再进入线程mythread 中执行,我在execute中用了Synchronize也是如此。我想在mythread 中显示调用窗口form1 显示for i:=1 to verylargecount 的循环进度。form1.processbar1.position:=i 等for 执行完了我再统计进度已经没有意义。 请问以上是为什么?????