关于用TABSET控制子窗体问题,很急,憋在这半天了,改了几次函数了,哎! ( 积分: 100 )

  • 主题发起人 nirendao
  • 开始时间
N

nirendao

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure OpenForm(FormClass:TFormClass;var form;AOwner:TComponent;var PerTabset:TTabSet);
var
i: integer;
Child:TForm;
begin
for i := 0 to Screen.FormCount -1 do
if Screen.Forms.ClassType=FormClass then
begin
Child:=Screen.Forms;
ShowWindow(Child.handle,3);
if (not Child.Visible) then Child.Visible:=True;
Child.BringToFront;
Child.Setfocus;
TForm(form):=Child;

exit;
end;
Child:=TForm(FormClass.NewInstance);
TForm(form):=Child;
Child.Create(AOwner);
PerTabset.Tabs.Add(child.Caption);
PerTabset.TabIndex:=PerTabset.Tabs.IndexOf(child.Caption);
//加入到任务栏的字符串中去

end;
//删除TABSET控件对应窗体的索引名
procedure FreeTab();
var
i:Integer;
begin

PerMainForm.PerMainTabSet.Tabs.Delete(PerMainForm.PerMainTabSet.TabIndex);
for i:= 0 to PerMainForm.PerMainTabSet.Tabs.Count-1 do
begin//跳转到新窗体,否则窗体大小存在问题
Commander(PerMainForm.PerMainTabSet.Tabs);
end;

end;
//命令解释器
procedure Commander(Cmd:string);
begin
if cmd = '消费支出' then
begin//打开消费支出窗体
openForm(TExpenseForm,ExpenseForm,ExpenseForm,PerMainForm.PerMainTabSet);
end;
if cmd = '关于' then
begin//测试用
openForm(TAboutForm,AboutForm,AboutForm,PerMainForm.PerMainTabSet);
end;
end;
问题是,第一次打开窗体都没问题,当关闭窗体后再次打开就出问题
procedure TExpenseForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin//退出窗体
if Key=VK_ESCAPE then
FreeTab();//释放
self.Close;
end;

procedure TExpenseForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin

Action:=caFree;

end;
 
ABSTRACT ERROR 报这样的错误,再次打开窗体时
 
顶部