提示: SetParent 应该 Windows.SetParent, 因为 TForm 的父类有同名方法.
//声明: {获取父窗口句柄} GetParent(hWnd: HWND): HWND; {指定父窗口} SetParent( hWndChild: HWND; {子句柄} hWndNewParent: HWND {父句柄} ): HWND; {成功返回原父窗口句柄; 失败返回 0} {移动窗口} MoveWindow( hWnd: HWND; {窗口句柄} X, Y: Integer; {位置} nWidth, nHeight: Integer; {大小} bRepaint: BOOL {True 表示刷新; False 表示不刷新} ): BOOL;
//举例: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin if GetParent(Edit1.Handle)=Handle then begin Windows.SetParent(Edit1.Handle, Button1.Handle); MoveWindow(Edit1.Handle, 0,0, Edit1.Width, Edit1.Height, True); end else begin Windows.SetParent(Edit1.Handle, Self.Handle); MoveWindow(Edit1.Handle, 0,0, Edit1.Width, Edit1.Height, True); end; end; end.
//效果图: