已知一窗体的句柄,如何将一组件的parent赋予此窗体?(真的无法解决吗?) (100分)

  • 主题发起人 主题发起人 yostgxf
  • 开始时间 开始时间
Y

yostgxf

Unregistered / Unconfirmed
GUEST, unregistred user!
可以得到一窗体的句柄,不知道如何构件此窗体,并将一组件(例:TEdit)的parent赋予此窗体?望高手赐教。
举例:如果想把一个具有Align属性的组件(例:TChart)放到MDI窗体的客户区显示(也就是放到子窗体后面),(客户区实际上也是一个窗体,但只有句柄)。可以用AChart.ParentWindow:=Self.ClientHandle将显示实现,但AChart.Parent无法赋值,也就是说其Align属性就无效了。请各位高手指点,想想办法。
 
edit.parent.handle:=form.handle;
 
调用Windows单元的一个API---SetParent

Windows.SetParent(Button1.Handle,Panel1.Handle);
 
edit.parent.handle是只读属性,TWinControl的类(TEdit等)没有SetParent方法。
 
用setparent api就可以了
 
edit1.parent := MyForm;
 
//用RemoveComponent, InsertComponent改变控件的Owner;
var
I: Integer;
Temp: TComponent;
begin
for I := ComponentCount - 1 downto 0 do
begin
Temp := Components;
if not (Temp is TControl) then
begin
RemoveComponent(Temp);
DataModule2.InsertComponent(Temp);
end;
end;
end;
 
可能大家误解了。问题是现在我只能得到这一窗体的句柄,无法得到它的实例。当然不可能在此窗体中添代码,更不能edit1.parent := MyForm。
我只能从其它单元中可以获得此窗体的Handle,我想把此窗体付给一个组件(TWinControl)的parent。
 
Tform(findcontrol(handle))
 
谢谢,也不行。Tform(findcontrol(handle))=nil
 
edit1.Parent:=Form
 
楼上不是已经说了吗,用SetParent函数
The SetParent function changes the parent window of the specified child window.
HWND SetParent(
HWND hWndChild, // handle of window whose parent is changing
HWND hWndNewParent // handle of new parent window
);
 
windows.setparent(edit1.handle, yourParent.handle);
怎样,其实别人已经说了。
在这种情况下,这可是唯一的方法
 
wjh_wy可以使用
最好放在函数里面。
DELPHI6从入门到精通上面有。
《Mastering DELPHI6》
 
windows api setparent
 
谢谢各位。我现在把问题用另外一个方法举个例描述一下:如果想把一个具有Align属性的组件(例:TChart)放到MDI窗体的客户区显示(也就是放到子窗体后面),(客户区实际上也是一个窗体,但只有句柄)。可以用AChart.ParentWindow:=Self.ClientHandle将显示实现,但AChart.Parent无法赋值,也就是说其Align属性就无效了。请各位高手指点,想想办法。
 
这问题真的没法解决吗?望各位高手援手。
 
这问题是不是真的没法解决,还望各位高手们发个话。
 
控件的Align属性效果是通过它的Parent.AlignControls自己完成的,所以......
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
601
import
I
后退
顶部