读书人

PageControl中Form输入操作会频繁出现

发布时间: 2012-03-27 13:44:24 作者: rapoo

PageControl中Form输入操作会频繁出现失去焦点,edit等输入框无法输入
procedure TfrmMain.CreateTabSheet( myFormClass: TFormClass;var Reference: TForm);
var
MyForm : TForm;
begin
tabsheet := TRzTabSheet.Create(RpgcMain);
try
tabsheet.Caption := Reference.Caption;
tabsheet.PageControl := RpgcMain;
tabsheet.Name := stabsheetname;
MyForm := myFormClass.Create(tabsheet);
try
MyForm.Parent := tabsheet;
MyForm.BorderStyle := bsnone;
MyForm.WindowState := wsmaximized;
RpgcMain.ActivePage := tabsheet;
MyForm.Show;
except
FreeAndNil(MyForm);
end;
except
FreeAndNil(tabsheet);
end;
end;

把窗体放入PageControl后,PageControl中Form内的快捷键处理。

procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
function GetMyParentForm(Control: TControl): TCustomForm;
begin
Result := nil;
while Control.Parent <> nil do
begin
Control := Control.Parent;
if Control is TCustomForm then
begin
Result := TCustomForm(Control);
Break
end
end;
end;
var
ParentForm : TCustomForm;
begin
ParentForm := GetMyParentForm(ActiveControl);
if ParentForm <> nil then
begin
if (ParentForm is TCustomForm) and
(ParentForm.Parent is TTabSheet) then
begin
ParentForm.IsShortCut(Msg);
end;
end;


问题来了,PageControl中Form输入操作会频繁出现失去焦点的问题。edit等不能输入,需要关闭窗口,重新开启后才能输入。请问问题出在那里,如何解决?

[解决办法]
你在TForm1中OnShortCut触发快捷键,为什么还要找父窗体的的快捷键事件?你这样就相当于触发父窗体的快捷键,导致焦点切换了。
[解决办法]

探讨

没有,我是说现在出来的结果是那样子,我在左边放置panl,一部看不见,一部份看到!

引用:
你又自己置“子窗体宽高设置为主窗体的宽度”? 前面不是已置了windowState max?

读书人网 >.NET

热点推荐