新建一个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的父窗口是什么时候设置的呢?
时间: 2024-08-08 14:37:55