![]() |
Listview -> checked?
Hallo,
wie kann ich ein event auslösen wenn ich in einer Listview bei einem Kontrollkästchen einen Haken setzte? |
Re: Listview -> checked
Siehe dazu folgenden SwissDelphiCenter Beitrag:
![]() |
Re: Listview -> checked
Danke genau sowas habe ich gesucht... :wink: :dancer:
Delphi-Quellcode:
Nur jetzt weiß ich nicht wie ich überprüfen kann dass mindestens eine Checkbox aktiviert ist oder keine.
procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var Item: TListItem; HitTest: THitTests; begin // Welchem Item gehört die CheckBox // Which item belongs to the checkbox Item := ListView1.GetItemAt(x, y); // Was wurde vom Item genau angeklickt // What kind of thing was hit on the item HitTest := ListView1.GetHitTestInfoAt(x, y); // Falls ein Item angeklickt wurde und davon die Checkbox // If an Item was hit and exactly his checkbox if (Item <> nil) and (HitTest = [htOnStateIcon]) then begin //////////////////////////////// // Hier das OnCheck behandeln // // Handle OnCheck here // //////////////////////////////// // Beispiel // Example // if Item.Checked = true then begin Button1.Enabled := true; end else begin Button1.Enabled := false; end; end; end; |
Re: Listview -> checked?
Delphi-Quellcode:
das ist die primitivste methode. ich weiß nicht, ob diese Funktion schon irgendwo implementiert ist...
function isCheckedItem: boolean;
var i: integer; begin result := false; for i := 0 to listview1.Items.Count - 1 do result := result or Listview1.Items[i].Checked; end; |
Re: Listview -> checked?
Lasst uns die primitivste Methode noch ein wenig optimieren :mrgreen:
Delphi-Quellcode:
...:cat:...
function isCheckedItem: boolean;
var i: integer; begin for i := 0 to listview1.Items.Count - 1 do if Listview1.Items[i].Checked then begin result := true; exit; end; result := false; end; |
Re: Listview -> checked?
Danke vielmals. :dancer2:
|
Re: Listview -> checked?
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:
im OnFormShow werden die Items hinzugefügt und alle gechecked. (mittels der funktion wird die anzahl in der statusbar ausgegeben).
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; 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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz