//根据TABSHEET.CAPTION来删除,如DestroyTabSheet('a1')
procedure DestroyTabSheet(Const TabSheetCaption:String)
var
I: Integer;
Temp: TComponent;
begin
for I := ComponentCount - 1 downto 0 do //查找所有控件
begin
Temp := Components[I];
if (Temp is TTabSheet) then //如果是TTABSHEET
begin
if (Temp As TTabSheet).Caption :=TabSheetCaption then //是否要删除
Begin
(Temp As TTabSheet).Free;
Exit;
end;
end;
end;end;
procedure DestroyTabSheet(Const TabSheetCaption:String)
var
I: Integer;
Temp: TComponent;
begin
for I := ComponentCount - 1 downto 0 do //查找所有控件
begin
Temp := Components[I];
if (Temp is TTabSheet) then //如果是TTABSHEET
begin
if (Temp As TTabSheet).Caption :=TabSheetCaption then //是否要删除
Begin
(Temp As TTabSheet).Free;
Exit;
end;
end;
end;end;
a1 : array[1..10] of TTabSheet;
...
所以只要判断(temp as Ttabsheet).name='a'+inttostr(i)即可.
如(示意,未经测试):objList := TObjectList.Create; with TTabSheet(TObjectList.Add(TTabSheet.Create(nil))) do
begin
...
end; objList.Delete(0);
...
objList.FreeAndNil;
...
在form的public中定义 tabsheetlist: TObjectList;
在formcreate中创建:
procedure TForm1.FormCreate(Sender: TObject);
begin
tablist.Create;
end;
运行出错提示:内存地址存取错误!
可是怎么能错呢?就这么几行程序???
但是出错!
2、在窗体creat事件中:
procedure TForm1.FormCreate(Sender: TObject);
begin
ControlList:=TList.Create;
end;
3、在你的代码中加入:
for i:=0 to 10 do
begin
with TTabSheet.Create(tabsheet1) do
begin
PageControl:=PageControl1;
Name:='a'+inttostr(i);
Caption:='a'+inttostr(i);
end;
ControlList.Add(tabsheet1);
end;//end for
4、在FORMDESTROY事件中释放动态生成的控件资源
procedure TForm1.FormDestroy(Sender: TObject);
var i:Integer;
begin
for i := 1 to ControlList.Count -1 do
TQRLabel(ColTitleList.Items[i]).free;
ColTitleList.free; for i := 1 to ColDetailList.Count -1 do
TTabSheet(ControlList.Items[i]).free;
ControlList.free;
end;
我用以上代码在动态创建控件中使用没有问题。呵呵给分吧^o^,没有功劳也有苦劳吧
操作:
Var
bb:TButton;
begin
bb :=GetMyButton('Button2');
if bb <> nil then
bb.Free;
end;function TForm1.GetMyButton(Const CompName:String):TButton;
var
I: Integer;
Temp: TComponent;
begin
Result :=nil;
for I := ComponentCount - 1 downto 0 do //查找所有控件
begin
Temp := Components[I];
if (Temp is TButton) then //是否Button,你可用TabSheet,ListView等
begin
if (Temp As TButton).Name =CompName then //控件名称比较,你可以用Caption.Tag等
Begin
Result :=(Temp as TButton);
Exit;
end;
end;
end;
end;
begin
tablist.Create; //!! tablist:=TObjectList.Create;
end;