DeleteObjects (objectlist)

De Wiki1000
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:

Listes d'objets (tech)Développement DSM

Outils personnels