DeleteObjects (objectlist)
procedure DeleteObjects(iStopOnError:boolean);
Cette procédure supprime les objets de la liste.
| iStopOnError | Stoppe si une erreur se produit |
- Si une transaction est ouverte la suppression se fait dans la transaction courante
- Si aucune transaction n'est ouverte une transaction séparée est utilisé
Pseudo code équivalent:
procedure doDeletes(iStopOnError:boolean);
var idx:Integer; aRef:TitObject;
begin
//
// Delete all the objects.
//
for idx:=Count-1 downto 0 do
begin
aRef := Refs[idx].Instance;
if Assigned(aRef) then aRef._AddRef;
Delete(idx);
try
if Assigned(aRef) then
begin
aRef.Deleted := TRUE;
end;
except
if iStopOnError then
begin
Insert(idx,aRef);
if Assigned(aRef) then aRef._Release;
raise;
end;
end;
if Assigned(aRef) then aRef._Garbage;
end;
end;
procedure DeleteObjects(iStopOnError:boolean);
begin
if ClassManager.TranCount>0 then
begin
// instances are removed from the list
doDeletes(iStopOnError);
end
else
begin
old := ClassManager.NewTransContext;
try
ClassManager.BeginTran;
try
doDeletes(iStopOnError);
ClassManager.Commit([coNoConfirmDialog]);
except
Classmanager.RollBack;
raise ;
end;
finally
ClassManager.ActivateContext(old);
end;
end;
end;
Voir aussi: