多线程 动态创建 控件(100分)

  • 主题发起人 主题发起人 flymyhart
  • 开始时间 开始时间
F

flymyhart

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个自动创建控件的程序!
可是我发现 线程里只要 调用 控件的Parent 属性 就会出错!!

程序 如下(我先做的一个例子!)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
count: integer;

implementation
{$R *.dfm}
procedure createdit;stdcall;
var
edit1:TEdit;
begin
edit1:=TEdit.create(self);
edit1.Parent:=Form1;
edit1.Top:=20;
edit1.Left:=50;
edit1.Height:=10;
edit1.Width:=30;
sleep(10);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
_d:dword;
begin
CreateThread(nil,0,@createdit,nil,0,_d);
end;

end.
 
>> edit1:=TEdit.create(self);
>> edit1.Parent:=Form1;
>> edit1.Top:=20;
>> edit1.Left:=50;
>> edit1.Height:=10;
>> edit1.Width:=30;
这些都是VCL的控件属性,是线程不安全的,不能这么用
>> edit1:=TEdit.create(self);
self 哪里来的?
你这不是成员函数,哪里来的self ?
 
同一楼上说法!
 
那么如何 应用线程 创建动态数组??
有没有这方面的资料?谢谢~
 
大多数vcl不是线程安全的,要动态多线程创建控件,只有从头开始自己写这些控件,让他们为线程安全的。
 
后退
顶部