如何做父母'表单? (控制赢了但不接受焦点)

时间:2017-02-06 10:22:42

标签: delphi delphi-xe7

我有一个儿童表格' 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.

Code as ZIP

但frmInsertImg中的控件(编辑框,旋转编辑等)不会接受来自鼠标的焦点,但可以使用Tab进行聚焦。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

我建议您为子表单设置BorderStylebsNone。我不确定这种方法的确切原因,但它具有预期的效果。

如果您需要为您的子表单添加可视框架,那么最好使用显式UI来填充您的子表单。

在我看来,表格并不是真的以这种方式使用。你可以让事情大部分都有效,但它并不是非常强大。将UI放入框架然后托管它应该会带来更好的行为。