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;
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;