Thema: Delphi Listview -> checked?

Einzelnen Beitrag anzeigen

dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Listview -> checked?

  Alt 17. Feb 2004, 16:18
ich habe da ein problem:

ich lasse nach jedem markieren/demarkieren eines eintrages die anzahl der insgesamt gecheckten items durchzählen und in der statusbar anzeigen:
Delphi-Quellcode:
function AnzahlCheckedItems: integer; // gibt die anzahl der insgesamt gecheckten items zurück
var
  i,wert: integer;
begin
wert:=0;
  for i := 0 to FormVersetzung.listview1.Items.Count - 1 do
    if FormVersetzung.Listview1.Items[i].Checked then
     inc(wert) //erhöht den wert um 1
    else
     dec(wert); //verringert den wert um 1
  result := wert; //gibt den wert zurück (anzahl aller gecheckten items
end;

procedure TFormVersetzung.ListView1MouseUp(Sender: TObject; // Die prozedur vom SwissDelphiCenter
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  Item: TListItem;
  HitTest: THitTests;
  i:integer;
begin
 Item := ListView1.GetItemAt(x, y); // Welchem Item gehört die CheckBox
 HitTest := ListView1.GetHitTestInfoAt(x, y); // Was wurde vom Item genau angeklickt
 if (Item <> nil) and (HitTest = [htOnStateIcon]) then // Falls ein Item angeklickt wurde und davon die Checkbox
  begin
   StatusBar1.Panels[1].Text:= 'Selektiert: ' + IntToStr(AnzahlCheckedItems); // ermittelt über die funktion die azahl und schreibt diese in die statusbar
  end;
end;
im OnFormShow werden die Items hinzugefügt und alle gechecked. (mittels der funktion wird die anzahl in der statusbar ausgegeben).
ich habe also z.b. 10 items in dem listview und in der bar steht auch 10.
soweit funktioniert ja auch alles! aber wenn ich jetzt bei einem item den haken wegnehme, wird der wert in der statusbar um 2 verringert (nicht aber um 1 , wie es eigentlich sein sollte!). beim setzen eines hakens wird die zahl um 2 erhöht! woran liegt das?


Gruß, dopeline
  Mit Zitat antworten Zitat