我有一个儿童表格' 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进行聚焦。
我做错了什么?
答案 0 :(得分:3)
我建议您为子表单设置BorderStyle
到bsNone
。我不确定这种方法的确切原因,但它具有预期的效果。
如果您需要为您的子表单添加可视框架,那么最好使用显式UI来填充您的子表单。
在我看来,表格并不是真的以这种方式使用。你可以让事情大部分都有效,但它并不是非常强大。将UI放入框架然后托管它应该会带来更好的行为。