标签:
新建一个Form,上面放一个Button1,一个Panel1,然后在Panel1上再放一个Button2,测试结果:
procedure TForm1.Button1Click(Sender: TObject); begin if IsChild(handle, handle) then ShowMessage(‘yes‘) else ShowMessage(‘no‘); // 显示No, 因为Form自己不是自己的Child if IsChild(handle, button1.handle) then ShowMessage(‘yes‘) // 显示Yes else ShowMessage(‘no‘); if IsChild(handle, panel1.handle) then ShowMessage(‘yes‘) // 显示Yes else ShowMessage(‘no‘); if IsChild(handle, button2.handle) then ShowMessage(‘yes‘) // 显示Yes,要研究一下,为什么 else ShowMessage(‘no‘); end; procedure TForm1.Button2Click(Sender: TObject); begin ShowMessage(button2.Parent.Name); // 显示Panel1 end;
TWinControl.CreateWindowHandle使用了TCreateParams.WndParent作为父窗口的句柄,那么button2的父窗口是什么时候设置的呢?
IsChild API与Delphi里的Parent不是一回事(Windows窗口自己不能是自己的子窗口,但Delphi不一定)
标签:
原文地址:http://www.cnblogs.com/findumars/p/4740839.html