急得要跳楼的问题。 ( 积分: 75 )

  • 主题发起人 主题发起人 cf83325
  • 开始时间 开始时间
C

cf83325

Unregistered / Unconfirmed
GUEST, unregistred user!
循环释放对象的问题。本人做个刷新功能。。。可是每次只刷新了一次,我要一次性释放所有的对象,我也知道,值要写个循环就可以,但不知道怎么写。写过 好几都错了,请问高手帮我改下。注释那面的那条语句,急得不行了啊。经理催我了。就是这个刷新功能了。

procedure TMain.N28Click(Sender: TObject);
var
i,j:Integer;
Delstr :string;
begin
for i := 0 to Main.ComponentCount-1 do
begin
if Main.Components is trzgroup then
begin

with qry1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from SMB_Group');
Open;

while not Eof do
begin
Delstr := qry1.FieldByName('GroupName').AsString;



if trzgroup(Main.Components).Caption=Delstr then
begin
trzgroup(Main.Components).Free;
Exit;//这里总是只释放了一个对象,能否帮我改下。这里怎么循环释放 掉所有的对象,每次一删除了一个对象。我要循环释放所有的对象
end;
Next;
end;

end;

end;
end;

FormCreate(Sender);
FormShow(Sender);
tv1.Items[0].Destroy;

end;
 
procedure TMain.N28Click(Sender: TObject);

procedure FreeComponent(DelStr: string);
var
I: Integer;
begin
for I := 0 to Main.ComponentCount - 1 do
if Main.Components is trzgroup then
if trzgroup(Main.Components).Caption = DelStr then
begin
trzgroup(Main.Components).Free;
Exit;//这里总是只释放了一个对象,能否帮我改下。这里怎么循环释放 掉所有的对象,每次一删除了一个对象。我要循环释放所有的对象
end;
end;

begin
with qry1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from SMB_Group');
Open;

while not Eof do
begin
FreeComponent(qry1.FieldByName('GroupName').AsString);
Next;
end;
end;

FormCreate(Sender);
FormShow(Sender);
tv1.Items[0].Destroy;
end;

未測試,應該行的
 
var
i: integer;
begin
for i := 0 to Main.ComponentCount - 1 do
Main.Components.Free;
end;
 
很感谢各位。。尤其是ANiDelphi朋友。你的没有测试方法一次性通过,呵呵。。牛人哦
 
后退
顶部