这是为什么?
解决方案 »
- 在线等JAVA转换成DELPHI
- 看看我这个获取窗口标题的程序为什么实现不了!
- 如何修改DBGridEh代码,让Indicator列上显示行号,而不显示三角形标记
- 对Delphi挺多控件不熟,哪些网站有较为全面的介绍控件的属性、方法等的资料?
- 项目所迫,VB程序员转Dephi开发,是否容易?
- dll如何以索引号输出函数?
- 那里有intraweb的书或资料
- 关于使用组件是出现“没有注册类别”
- 如何解决类似的单据编号的问题?高分求教!!
- 想控制报表的字段输出格式:数值类型的字段来表达价格,输出是怎么让他自动保持4个小数位,如:123,输出是:123.0000呢,
- Ado补丁的注册码是多少阿?help!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 怎么控制让TstringGrid中的某一单元中的字体颜色改变或这一单元整个变色,在线等待
i:integer;
begin
TProgress1.Create(ProgressBar2,0,100,0,1);
TProgress1.Create(ProgressBar3,0,100,0,1); for i:=0 to 99 do
begin
ProgressBar1.StepIt;
sleep(10); end;
end;
TProgress1是自建的线程类
private
FProgressBar: TProgressBar;
F1,F2,F3,F4: integer;
procedure DoMove;
protected
procedure Execute; override;
procedure Move(A1,B1,C1,D1:integer); virtual; abstract;
public
constructor Create(Progress: TProgressBar; A,B,C,D: integer);
end; TProgress1 = class(TProgressThread)
protected
procedure Move(A1,B1,C1,D1:integer); override;
end;
constructor Create(CreateSuspended:Boolean)
注:
参数CreateSuspended为一个布尔型变量,如果设置为False,线程对象创建后立即调用TThread类的另一个过程Excute,也就是立即开始执行线程操作;如果设置为True,则线程对象创建后,要调用Resume后线程操作才开始。
试一试吧!
主线程同步呢?
Classes, Graphics, ComCtrls, Windows;type TProgressThread = class(TThread)
private
FProgressBar: TProgressBar;
F1,F2,F3,F4: integer;
procedure DoMove;
protected
procedure Execute; override;
procedure Move(A1,B1,C1,D1:integer); virtual; abstract;
public
constructor Create(Progress: TProgressBar; A,B,C,D: integer);
end; TProgress1 = class(TProgressThread)
protected
procedure Move(A1,B1,C1,D1:integer); override;
end;implementation{ TProgressThread }constructor TProgressThread.Create(Progress: TProgressBar; A, B, C,
D: integer);
begin
FProgressBar:= Progress;
F1:= A; F2:= B; F3:= C; F4:= D;
FreeOnTerminate := True;
inherited Create(false);
end;procedure TProgressThread.DoMove;
var
i: integer;
begin
FProgressBar.Min:= F1;
FProgressBar.Max:= F2;
FProgressBar.Position:= F3;
FProgressBar.Step:= F4; for i:= 0 to FProgressBar.Max -1 do
begin
FProgressBar.StepIt;
sleep(10);
end;end;procedure TProgressThread.Execute;
begin
Move(1,1,1,1);end;{ TProgress1 }procedure TProgress1.Move(A1, B1, C1, D1: integer);
begin
// Synchronize(DoMove);
DoMove;
end;end.
主线程结束后,在主线程生成的次线程会跟你结束你要启一个进程才行。。
CreateProcess...