AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listview -> checked?

Ein Thema von Jazz · begonnen am 18. Sep 2003 · letzter Beitrag vom 17. Feb 2004
Antwort Antwort
Benutzerbild von Jazz
Jazz

Registriert seit: 13. Apr 2003
Ort: Stonebronx
108 Beiträge
 
#1

Listview -> checked?

  Alt 18. Sep 2003, 02:44
Hallo,
wie kann ich ein event auslösen wenn ich in einer Listview bei einem Kontrollkästchen einen Haken setzte?
  Mit Zitat antworten Zitat
Marco Haffner
(Gast)

n/a Beiträge
 
#2

Re: Listview -> checked

  Alt 18. Sep 2003, 05:01
Siehe dazu folgenden SwissDelphiCenter Beitrag:
...einen Klick auf die CheckBox einer TListView abfangen und behandeln?
  Mit Zitat antworten Zitat
Benutzerbild von Jazz
Jazz

Registriert seit: 13. Apr 2003
Ort: Stonebronx
108 Beiträge
 
#3

Re: Listview -> checked

  Alt 18. Sep 2003, 13:10
Danke genau sowas habe ich gesucht...
Delphi-Quellcode:
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;
Nur jetzt weiß ich nicht wie ich überprüfen kann dass mindestens eine Checkbox aktiviert ist oder keine.
  Mit Zitat antworten Zitat
Illuminator-23-5
(Gast)

n/a Beiträge
 
#4

Re: Listview -> checked?

  Alt 18. Sep 2003, 14:17
Delphi-Quellcode:
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;
das ist die primitivste methode. ich weiß nicht, ob diese Funktion schon irgendwo implementiert ist...
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#5

Re: Listview -> checked?

  Alt 18. Sep 2003, 14:19
Lasst uns die primitivste Methode noch ein wenig optimieren
Delphi-Quellcode:
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;
......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Jazz
Jazz

Registriert seit: 13. Apr 2003
Ort: Stonebronx
108 Beiträge
 
#6

Re: Listview -> checked?

  Alt 18. Sep 2003, 16:02
Danke vielmals.
  Mit Zitat antworten Zitat
dopeline

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

Re: Listview -> checked?

  Alt 17. Feb 2004, 17: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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz