Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Listenelemente bedingt löschen

  Alt 15. Okt 2009, 22:53
Zitat von Björn Ole:
Edit: Beim Klick auf Absenden kam mir ...
war bei mir vorhin nicht anders

und wegen der Ungereimtheiten:
eigentlich/theoretisch sollte sich nichts verändert haben,
gegenüber deinem ursprünglichen Code


Ach ja, normaler Weise wird in Delphi nicht immer ALLES ausgewertet

if a or b then ist hier z.B. a = true, dann steht das Ergebnis schon fest
und b wird nicht mehr verarbeitet ... also wenn b eine Funktion ist, dann würde sie nicht aufgerufen.


gut, da war och ein Fehler, aber auf beiden Seiten
hab was falsch zusammengesetzt

und wenn ich das jetzt nochmal versuche,
Delphi-Quellcode:
bIsBusy := IsItemBusy(i);
if bIsBusy then
  bDeleteAllBusy := UserWantsToDeleteAllBusyItems;

if bIsBusy and (not bDeleteAllBusy) then
  Continue;

//bCanDelete := not (AOnlySelected and not Items[i].Selected);
//if bCanDelete then
// Delete(i);
Delphi-Quellcode:
bIsBusy := IsItemBusy(i);
DeleteAllBusy := bIsBusy and UserWantsToDeleteAllBusyItems;

if bIsBusy and (not bDeleteAllBusy) then
  Continue;
Delphi-Quellcode:
bIsBusy := IsItemBusy(i);

if bIsBusy and (not (bIsBusy and UserWantsToDeleteAllBusyItems)) then
  Continue;
Delphi-Quellcode:
bIsBusy := IsItemBusy(i);

if bIsBusy and not (bIsBusy and UserWantsToDeleteAllBusyItems) then
  Continue;
dann kommt auch ein Problem deiner Seits raus
bIsBusy and not bIsBusy kann ja wohl nicht gehn und würde immer FALSE ergeben


[add]
Delphi-Quellcode:
procedure DeleteItems(AOnlySelected: boolean);
var
  i: integer;
  UWD, CalledUWD: boolean;

  function GetUWD;
  begin
    if not CalledUWD then
    begin
      UWD := UserWantsToDeleteAllBusyItems;
      CalledUWD := true;
    end;
    Result := UWD;
  end;

begin
  for i := Items.Count - 1 downto 0 do
  begin
    if (not IsItemBusy(i) or UserWantsToDeleteAllBusyItems)
        and (not AOnlySelected or Items[i].Selected) then
      Delete(i);
  end;
end;
mal sehn, ob ich's jetzt kappiert hab
- nur löschen wenn nicht IsItemBusy oder der User will es doch
- und nur löschen wenn selektiert bzw. AOnlySelected=nein
$2B or not $2B
  Mit Zitat antworten Zitat