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