在主界面上有個函數負責生成
tSheet:=TtabSheet.Create(nil);
tSheet.Name := 'Sheet_'+name;
tSheet.PageControl := FrmOwner_pageconer;在界面基類退出事件裡負責清楚
if Application.FindComponent('Sheet_'+Self.Name) <> nil then //TFrmMain.openForm
Application.FindComponent('Sheet_'+Self.Name).Destroying;
無論是Free FreeOnRelease,Destroying 都能得到執行不報錯!
可是PageControl的TabSheet還在。
tSheet:=TtabSheet.Create(nil);
tSheet.Name := 'Sheet_'+name;
tSheet.PageControl := FrmOwner_pageconer;在界面基類退出事件裡負責清楚
if Application.FindComponent('Sheet_'+Self.Name) <> nil then //TFrmMain.openForm
Application.FindComponent('Sheet_'+Self.Name).Destroying;
無論是Free FreeOnRelease,Destroying 都能得到執行不報錯!
可是PageControl的TabSheet還在。
解决方案 »
- 多点触摸软件的开发方法步骤?
- 窗体翻转是如何实现?
- 一个interface可否从另一个interface继承而来
- TIDTCPclient TTCPclient TUDPclient TIDTCPserver Ttcpserver TUDPserver 各有什么特点,在什么情况下用什么?请高手指点。
- 读内存数据
- 求救:怎样直接通过控件来update数据库表里面的数据??
- delphi中调用excel问题
- 各位大哥请帮忙,狂急!!!!!!!!!!!!
- Exit,Abort都是退出本程序,其区别是什么?
- 如何获取当前dbgrid中某一行的记录,并复制到另外一个窗口的几个dbedit上???
- 求助:如何实现每页打印固定记录条数?谢谢!
- 急!急!急! fast report打印出来的内容中,最后一行文字距离纸的底边界还有好多间隙,不知道有没有能解决的
tSheet.Name := 'Sheet_OIK';
tSheet.PageControl := FrmOwner_pageconer;在界面基類退出事件裡負責清楚
if Application.FindComponent('Sheet_OIK') <> nil then //TFrmMain.openForm
FreeAndNil(Application.FindComponent('Sheet_OIK'));
begin
with TTabSheet.Create(nil) do
begin
PageControl := PageControlOne;
TabVisible := True;
Caption := 'TabSheet' + IntToStr(PageIndex);
end;
end;
procedure TFormDemo.ButtonDeleteClick(Sender: TObject);
begin
if PageControlOne.ActivePage <> nil then
PageControlOne.ActivePage.Destroy;
end;
不過總得感覺不好牢固!
先試下看
估计你建立的名称与你FindComponent的名称不对应,你可以这样试试b
不可能啊!不對得話就查不到啊
begin
with TTabSheet.Create(nil) do
begin
PageControl := PageControlOne;
Tag := 10000+PageIndex; //生成特殊标记
TabVisible := True;
Caption := 'TabSheet' + IntToStr(PageIndex);
end;
end;procedure TFormDemo.ButtonDeleteClick(Sender: TObject);
var
Idx: Integer;
begin
{处理方法一
if PageControlOne.ActivePage <> nil then
//销毁方法一
PageControlOne.ActivePage.Destroy;
//销毁方法二
PageControlOne.ActivePage.Free;} {处理方法二
with PageControlOne do
begin
for Idx := Pred(ControlCount) downto 0 do
begin
if (Controls[Idx].Tag >= 10000) and (Controls[Idx] is TTabSheet) then
//销毁方法一
Controls[Idx].Destroy;
//销毁方法二
Controls[Idx].Free;
end;
end;}
end;
tSheet := TtabSheet.Create(Application);
tSheet.Name := 'Sheet_' + Name;if Application.FindComponent('Sheet_'+Self.Name)