【发布时间】:2017-02-06 10:22:42
【问题描述】:
我有一个子表单“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 进行焦点。
我做错了什么?
【问题讨论】:
-
我们不需要 ZIP,只需要 Q 中的 minimal reproducible example
-
Q 中发布的完整示例
-
添加
frmTest.BorderStyle := bsNone一切都很好。我怀疑您是否真的希望表单的非客户端 chrome 显示为顶级窗口。通常你会同时将Align设置为alClient。 -
包括
WS_CAPTION似乎是搞砸鼠标交互的原因。我强烈建议您放弃当前计划并使用bsNone。如果您出于视觉原因需要提供框架,请执行此操作。
标签: delphi delphi-xe7