程序大概如下
procedure TForm.on***(sender: TObject);
var
Form : TForm;
Button : TButton;
Edit: TEdit;
.....
begin
Form:=TForm.Create(self);
Button:=TButton.Create(self);
Button.Parent:=Form;
Button.Caption:='dfs';
........
end;
现在我想为这个成的button添加一个OnClick事件来改变From或其它控件的状态.
我试过在外面写一个Procedure 如Procedure TForm.OnC(Sender:TObject) 然后再让 Button.Onclick:=Onc;
这样做有一个问题, form及其它的控件都是局部变量. 在外面定义的过程(OnC) 无法访问到.我知道可以把要生成的控件设为全局, 这么做是不是有点笨啊, 有没有其的办法.
procedure TForm.on***(sender: TObject);
var
Form : TForm;
Button : TButton;
Edit: TEdit;
.....
begin
Form:=TForm.Create(self);
Button:=TButton.Create(self);
Button.Parent:=Form;
Button.Caption:='dfs';
........
end;
现在我想为这个成的button添加一个OnClick事件来改变From或其它控件的状态.
我试过在外面写一个Procedure 如Procedure TForm.OnC(Sender:TObject) 然后再让 Button.Onclick:=Onc;
这样做有一个问题, form及其它的控件都是局部变量. 在外面定义的过程(OnC) 无法访问到.我知道可以把要生成的控件设为全局, 这么做是不是有点笨啊, 有没有其的办法.
第一行代码应改为
procedure TForm1.on***(sender: TObject);
procedure TForm1.on***(sender: TObject);
var
Form2 : TForm;
Button : TButton;
Edit: TEdit;
.....
begin
Form2:=TForm.Create(self);
Button:=TButton.Create(self);
Button.Parent:=Form;
Button.Caption:='dfs';
........
end;
现在我想为这个成的Button添加一个OnClick事件来改变From2或其它控件的状态.
我试过在外面写一个Procedure 如Procedure TForm1.OnC(Sender:TObject) 然后再让 Button.OnClick:=Onc;
这样做有一个问题, Form2及其它动态生成的控件都是局部变量, 外面定义的过程OnC无法访问到.我知道可以把要生成的控件设为全局,这样OnC就可以访问了。 这么做是不是有点笨啊, 有没有其的办法.
然后面过程中写入,按钮点击后要执行的功能~!
Button.Caption:='dfs';
Button.OnClick:=self.WhenClick;
然后
procedure TFormMain.WhenClick(Sender: TObject);
begin
//onclick代码处理
end;
form2是一个在按下Ctrl+F 时弹出一个窗口类似查找功能。 我不想在与这个临时性的窗口与其的内容对其他的代码产生什么影响(新过程除外)。
有什么其它的办法,方案吗。
//动态 生成控件指定 NAME e := tedit.Create(Form);
e.Parent := Form;
e.Text := '123';
e.Name := 'edit';//过程调用时动态找
if FORM.FindComponent('edit') is tedit then tedit(FORM.FindComponent'edit')).Text := '456';