原代码如下:
procedure FormToPanel(a_header,a_rzpanel: TRZpanel; a_formClass: TFormClass);
var
NewDemoClass: TFormClass;
NewDemo: TForm;
iCount:integer;
begin
while FormList.Count > 1 do
begin
if Assigned(FormList.Objects[0]) then
FormList.Objects[0].Free;
FormList.Delete(0);
end;
NewDemoClass := a_formClass;
if (a_rzpanel.ControlCount = 0) or not (a_rzpanel.Controls[0] is NewDemoClass) then
begin
if Assigned(NewDemoClass) then
begin
NewDemo := NewDemoClass.Create(nil);
NewDemo.Hide;
NewDemo.WindowState:=wsMaximized;
NewDemo.BorderStyle := bsNone;
NewDemo.Align:= alClient;
a_header.Caption:='当前功能>>'+NewDemo.Caption;
NewDemo.Align :=alTop;
NewDemo.Dock(a_rzpanel,a_rzpanel.ClientRect);
NewDemo.Show;
FormList.AddObject('',NewDemo);
end;
end;
end;
但在使用的时候,出现一个很奇怪的问题:
有些窗体在菜单上点击一次就能正常显示,而有些窗体必须点击两次才能显示。
我对比过这些窗体,窗体的所有属性都是一样的,为什么会出现这种情况呢?麻烦哪位高人帮一下
procedure FormToPanel(a_header,a_rzpanel: TRZpanel; a_formClass: TFormClass);
var
NewDemoClass: TFormClass;
NewDemo: TForm;
iCount:integer;
begin
while FormList.Count > 1 do
begin
if Assigned(FormList.Objects[0]) then
FormList.Objects[0].Free;
FormList.Delete(0);
end;
NewDemoClass := a_formClass;
if (a_rzpanel.ControlCount = 0) or not (a_rzpanel.Controls[0] is NewDemoClass) then
begin
if Assigned(NewDemoClass) then
begin
NewDemo := NewDemoClass.Create(nil);
NewDemo.Hide;
NewDemo.WindowState:=wsMaximized;
NewDemo.BorderStyle := bsNone;
NewDemo.Align:= alClient;
a_header.Caption:='当前功能>>'+NewDemo.Caption;
NewDemo.Align :=alTop;
NewDemo.Dock(a_rzpanel,a_rzpanel.ClientRect);
NewDemo.Show;
FormList.AddObject('',NewDemo);
end;
end;
end;
但在使用的时候,出现一个很奇怪的问题:
有些窗体在菜单上点击一次就能正常显示,而有些窗体必须点击两次才能显示。
我对比过这些窗体,窗体的所有属性都是一样的,为什么会出现这种情况呢?麻烦哪位高人帮一下
NewDemo.Parent:= Pandle;没有指定父窗体,父窗体Paint的时候,没有通知子窗体刷新。
但为什么有的窗体就好用,有的窗体就不好用呢?
而且我还发现:
同一个窗体,原来是好用的,我对的几个控件进行了修改后,就不好用了。
我再重新建立一个窗体,然后把原来不好用的窗体中的内容全部拷贝到新窗体中,就又好用了。这是怎么回事呢?
但为什么有的窗体就好用,有的窗体就不好用呢?
而且我还发现:
同一个窗体,原来是好用的,我对的几个控件进行了修改后,就不好用了。
我再重新建立一个窗体,然后把原来不好用的窗体中的内容全部拷贝到新窗体中,就又好用了。这是怎么回事呢?