我用for循环创建线程,在两个文本框中显示不同字符串,但是只有最后一个文本框有内容unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses
unit2;
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i := 0 to 1 do
begin
Test.create(false,i);
end;
end;end.unit Unit2;interfaceuses
Classes;type
Test = class(TThread)
private
procedure test;
{ Private declarations }
protected
procedure Execute; override;
public
constructor create(suspended:boolean;i:integer);
end;var
id:integer;implementation
uses
unit1;constructor Test.create(suspended: Boolean; i: Integer);
begin
inherited create(suspended);
id:=i;
end;procedure Test.Execute;
begin
{ Place thread code here }
Synchronize(test);
end;procedure Test.test;
begin
if id=0 then
form1.Edit1.Text := 'hello'
else if id=1 then
form1.Edit2.Text := 'test';
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses
unit2;
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i := 0 to 1 do
begin
Test.create(false,i);
end;
end;end.unit Unit2;interfaceuses
Classes;type
Test = class(TThread)
private
procedure test;
{ Private declarations }
protected
procedure Execute; override;
public
constructor create(suspended:boolean;i:integer);
end;var
id:integer;implementation
uses
unit1;constructor Test.create(suspended: Boolean; i: Integer);
begin
inherited create(suspended);
id:=i;
end;procedure Test.Execute;
begin
{ Place thread code here }
Synchronize(test);
end;procedure Test.test;
begin
if id=0 then
form1.Edit1.Text := 'hello'
else if id=1 then
form1.Edit2.Text := 'test';
end;end.
解决方案 »
- 03年的老人,原来才三个三角?
- 1200分的问题,欢迎大家讨论之二 -- TWebBrowser应用
- +++++++请问,如何用opengl显示中文字体+++++++++
- MSComm 可发送,但不可接收? 程序如下
- 安装控件
- 看看我的句子.........送分
- 在服务器写了个过程,在客户端不能调用?!请高手指教!!!
- 为什么我的query.open 后,就不能append,总是提示不能修改一个 read-only dataset,how to?
- 数据库问题,请高手指点。
- 52个名牌保险套(年底了,大家轻松一下,笑一笑)
- ~~最后可用的35分了~问一个关于记录循环判断的问题~!!
- 生成HTML文件,并将已有的数据追加到前一个HTML,现在等的好急的
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses
unit2;
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i := 0 to 1 do
begin
with TTestThread.create(false,i) do;
end;
end;end.unit Unit2;interfaceuses
Classes;type
TTestThread = class(TThread)
private
procedure test;
{ Private declarations }
protected
procedure Execute; override;
public
constructor create(suspended:boolean;i:integer);
end;var
id:integer;implementation
uses
unit1;constructor TTestThread.create(suspended: Boolean; i: Integer);
begin
inherited create(suspended);
id:=i;
end;procedure TTestThread.Execute;
begin
{ Place thread code here }
Synchronize(test);
end;procedure TTestThread.test;
begin
if id=0 then
form1.Edit1.Text := 'hello'
else if id=1 then
form1.Edit2.Text := 'test';
end;end.
begin
{ Place thread code here }
inherited; //加上这个试试
Synchronize(test);
end;
begin
id:=i;
inherited create(suspended);
end;
//先赋值再继承执行
==========================================
procedure TTestThread.Execute;
begin
{ Place thread code here }
Synchronize(test);
Sleep(0);
end;
Test = class(TThread)
private
id:integer; //id声明在这里看看
procedure test;
{ Private declarations }
protected
procedure Execute; override;
public
constructor create(suspended:boolean;i:integer);
end;