如何'parent'一个表格? (控件不会接受焦点)
How to 'parent' a form? (Controls won't accept focus)
我有一个子窗体 'frmTest' 和一个主窗体 'TfrmMain'。我将主窗体设置为 frmTest 的父窗体,如下所示:
unit Main;
INTERFACE
USES
System.SysUtils, System.Classes, Vcl.Forms, Test, Vcl.StdCtrls, Vcl.Controls;
type
TfrmMain = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
IMPLEMENTATION {$R *.dfm}
procedure TfrmMain.Button1Click(Sender: TObject);
VAR frmTest: TChildForm;
begin
Application.CreateForm(TChildForm, frmTest);
//frmTest:= TForm1.Create(Self);
frmTest.Parent:= Self;
frmTest.Show;
frmTest.SetFocus;
end;
unit test; { THIS IS THE CHILD }
INTERFACE
USES
System.SysUtils, System.Classes, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Samples.Spin;
TYPE
TChildForm = class(TForm)
Edit1: TEdit;
SpinEdit1: TSpinEdit;
private
public
end;
IMPLEMENTATION {$R *.dfm}
end.
但 frmInsertImg 中的控件(编辑框、旋转编辑等)不接受鼠标焦点,但可以使用 Tab 键聚焦。
我做错了什么?
我建议您将子表单的 BorderStyle
设置为 bsNone
。我不确定这样做的确切原因,但它具有预期的效果。
如果您需要为您的子表单添加视觉框架,那么最好为您的子表单包含的显式 UI 完成。
在我看来,表格并不是真的打算以这种方式使用。您可以使大部分事情正常运行,但它并不是非常健壮。将 UI 放入框架中,然后托管应该会带来更好的行为。
我有一个子窗体 'frmTest' 和一个主窗体 'TfrmMain'。我将主窗体设置为 frmTest 的父窗体,如下所示:
unit Main;
INTERFACE
USES
System.SysUtils, System.Classes, Vcl.Forms, Test, Vcl.StdCtrls, Vcl.Controls;
type
TfrmMain = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
IMPLEMENTATION {$R *.dfm}
procedure TfrmMain.Button1Click(Sender: TObject);
VAR frmTest: TChildForm;
begin
Application.CreateForm(TChildForm, frmTest);
//frmTest:= TForm1.Create(Self);
frmTest.Parent:= Self;
frmTest.Show;
frmTest.SetFocus;
end;
unit test; { THIS IS THE CHILD }
INTERFACE
USES
System.SysUtils, System.Classes, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Samples.Spin;
TYPE
TChildForm = class(TForm)
Edit1: TEdit;
SpinEdit1: TSpinEdit;
private
public
end;
IMPLEMENTATION {$R *.dfm}
end.
但 frmInsertImg 中的控件(编辑框、旋转编辑等)不接受鼠标焦点,但可以使用 Tab 键聚焦。
我做错了什么?
我建议您将子表单的 BorderStyle
设置为 bsNone
。我不确定这样做的确切原因,但它具有预期的效果。
如果您需要为您的子表单添加视觉框架,那么最好为您的子表单包含的显式 UI 完成。
在我看来,表格并不是真的打算以这种方式使用。您可以使大部分事情正常运行,但它并不是非常健壮。将 UI 放入框架中,然后托管应该会带来更好的行为。