F
flyinsky
Unregistered / Unconfirmed
GUEST, unregistred user!
//////////自定义过程
procedure ChangeOwner (Component, NewOwner: TComponent);
begin
Component.Owner.RemoveComponent (Component);
NewOwner.InsertComponent (Component);
end;
///////Form1上的buttonchange纽,点击在form2上创建button1
procedure TForm1.ButtonChangeClick(Sender: TObject);
begin
if Assigned (Button1) then
begin
// change parent
Button1.Parent := Form2;
// change owner
chaneowner(button1,form2);
end;
end;
///先定义了 Form1,Form2,在Form1上放个 BUTTON1,并且给予一个事件:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage ('My owner is ' +((Sender as TButton).Owner
as TForm).Caption);
end;
//////////////////////////////////////////////////////
以上可以正确执行,但我在procedure TForm1.ButtonChangeClick中修改
如下,(不使用procedure changeowner)
procedure TForm1.ButtonChangeClick(Sender: TObject);
begin
if Assigned (Button1) then
begin
// change parent
Button1.Parent := Form2;
// change owner
form1.removecomponent(button1);
form2.insertcomponent(button1);
end;
end;
/////////////////////////////////////////
这时运行中有异常出现,虽然BUTTON1还是在Form2中创建了,但
button1click 事件无法正确运行了。
照说这与前面的方法是一样的呀?问题在哪?
2:还有button1以及事件button1click都是在Form1中创建的
为什么动态创建到Form2中时,同样可以调用呢?
是否只要用了Insertcomponent(mycomponent) 后,Mycomponent
及其相关的方法都自动创建到了新窗体中了呢?
procedure ChangeOwner (Component, NewOwner: TComponent);
begin
Component.Owner.RemoveComponent (Component);
NewOwner.InsertComponent (Component);
end;
///////Form1上的buttonchange纽,点击在form2上创建button1
procedure TForm1.ButtonChangeClick(Sender: TObject);
begin
if Assigned (Button1) then
begin
// change parent
Button1.Parent := Form2;
// change owner
chaneowner(button1,form2);
end;
end;
///先定义了 Form1,Form2,在Form1上放个 BUTTON1,并且给予一个事件:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage ('My owner is ' +((Sender as TButton).Owner
as TForm).Caption);
end;
//////////////////////////////////////////////////////
以上可以正确执行,但我在procedure TForm1.ButtonChangeClick中修改
如下,(不使用procedure changeowner)
procedure TForm1.ButtonChangeClick(Sender: TObject);
begin
if Assigned (Button1) then
begin
// change parent
Button1.Parent := Form2;
// change owner
form1.removecomponent(button1);
form2.insertcomponent(button1);
end;
end;
/////////////////////////////////////////
这时运行中有异常出现,虽然BUTTON1还是在Form2中创建了,但
button1click 事件无法正确运行了。
照说这与前面的方法是一样的呀?问题在哪?
2:还有button1以及事件button1click都是在Form1中创建的
为什么动态创建到Form2中时,同样可以调用呢?
是否只要用了Insertcomponent(mycomponent) 后,Mycomponent
及其相关的方法都自动创建到了新窗体中了呢?