如何在其它窗口使用动态创建的控件属性 ( 积分: 45 )

  • 主题发起人 主题发起人 394558739
  • 开始时间 开始时间
3

394558739

Unregistered / Unconfirmed
GUEST, unregistred user!
我在主窗口FROM1中使用动态方法创建了一个可视控件(但不显示的),如EDIT123,并指定EDIT123.TEXT:='',现在我想在其它窗口如FROM2中,使用FROM1中EDIT123.TEXT:=''.
 
uses
Unit1;

TForm2.Button1Click(Sender: TObject);
var
Edt: TComponent;
begin
Edt := Form1.FindComponent('EDIT123');
if Edt is TEdit then
TEdit(Edt).Text := '';
end;
 
我是这样动态创建的
procedure TForm1.noCreate(Sender: TObject);
begin
Editfuzi:=TEdit.Create(self);
Editfuzi.Text:='no';
end;

但在Form2中无法使用,已加uses Unit1;,如下:
procedure TForm2.BitBtn3Click(Sender: TObject);
begin
edit4.Text:=Form1.EDITfuzi.Text;//我想这样使用;但是错误的.
end;
 
Editfuzi在哪里声明呢,如果是Form1的一部分,那么直接调用就没问题了
TForm1 = class(TForm)
private
Editfuzi: TEdit;
...

如果是全局变量,可以直接使用
var
Editfuzi: TEdit;
直接调用
Edit4.Text := Editfuzi.Text; //Unit1.Editfuzi.Text;

如果是局部变量,那么就要通过其它办法了,
procedure TForm1.noCreate(Sender: TObject);
begin
Editfuzi:=TEdit.Create(self);
Editfuzi.Text:='no';
Editfuzi.Name := 'EDIT123'; //加上这个name属性,就可以用我上面的方法访问了
end;

TForm2.Button1Click(Sender: TObject);
var
Edt: TComponent;
begin
Edt := Form1.FindComponent('EDIT123');
if Edt is TEdit then
Edit4.Text := TEdit(Edt).Text;
end;
 
1楼方法 完全通用
 
谢谢楼上两位,已OK了。
如果,下列这样情况又如何处理:
我想在Form1中设个S:STRING;
按按键1时S:=‘NO’
按按键2时S:=‘YES’;
在Form2中用
IF Form1.S='no' then
.....
IF Form1.S='yes' then
.....

或这样

我想在Form1中设个S:Boolean;
按按键1时S:=True
按按键2时S:=False;
在Form2中用
IF Form1.S=True then
.....
IF Form1.S=False then
.....
 
多人接受答案了。
 

Similar threads

后退
顶部