AGB  ·  Datenschutz  ·  Impressum  







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

TListView ind das selektieren

Ein Thema von Anthauri · begonnen am 16. Jul 2008 · letzter Beitrag vom 28. Okt 2008
Antwort Antwort
Anthauri

Registriert seit: 1. Feb 2004
61 Beiträge
 
Delphi 6 Personal
 
#1

TListView ind das selektieren

  Alt 16. Jul 2008, 16:39
Hallo zusammen,
ich habe ein Programm, das u.a. eine TListView enthält, bei der die Checkboxes aktiviert (also nutzbar) sind.

Ich möchte nun darauf reagieren wenn der Anwender in einer Zeile den Inhalt der Checkbox ändert. Ich habe leider nur noch nicht gefunden wie.

Ich möchte nämlich, dass im Moment der Aktivierung der Checkbox besondere Schritte durchlaufen werden (und bei der Deaktivierung andere), die die Inhalte der zugehörigen Items verändern.

Kann jemand helfen?
  Mit Zitat antworten Zitat
marius0702

Registriert seit: 1. Jan 2008
40 Beiträge
 
#2

Re: TListView ind das selektieren

  Alt 16. Jul 2008, 16:47
Delphi-Quellcode:
procedure TForm1.CheckBoxMultiClick(Sender: TObject);
begin
  Case (Sender as TCheckBox).Tag of
    0: if CheckBox1.Checked then Listview1.items[0]:='Bla Bla';
    1: if CheckBox2.Checked then ...;
    2: if CheckBox3.Checked then ...;
    3: if CheckBox4.Checked then ...;
    4: if CheckBox5.Checked then ...;
    5: if CheckBox6.Checked then ...;
    6: if CheckBox7.Checked then ...;
    7: if CheckBox8.Checked then ...;
  end;
end;
Meinst du so?
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#3

Re: TListView ind das selektieren

  Alt 16. Jul 2008, 16:51
Wenn ich das richtig verstehe:
TListView.OnChange
Sebastian
  Mit Zitat antworten Zitat
marius0702

Registriert seit: 1. Jan 2008
40 Beiträge
 
#4

Re: TListView ind das selektieren

  Alt 16. Jul 2008, 16:55
Nein bei allen checkbox componenten bei onclick oder onchange.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#5

Re: TListView ind das selektieren

  Alt 16. Jul 2008, 17:08
die Shweizer sind zwar langsam, haben aber einen Tip für dein Problem dafür!
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6

Re: TListView ind das selektieren

  Alt 16. Jul 2008, 17:09
Hallo,

Oder du machst du Überprüfung im OnMouseUp der TListView.


Delphi-Quellcode:
procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Item: TListItem;
  HitTest: THitTests;
begin
  with TListView(Sender) do
  begin
    Item := GetItemAt(x, y); // Item an Mausepos. ermitteln
    if Assigned(Item) then
    begin
      HitTest := GetHitTestInfoAt(x, y);
      if (HitTest = [htOnStateIcon]) then // Test ob Click auf Checkbox erfolgt ist
      begin
        if Item.Checked = True then // falls angeclickt
        begin
          // Checkbox angeclickt, mache etwas
        end;
      end;
    end;
  end;
end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#7

Re: TListView ind das selektieren

  Alt 16. Jul 2008, 17:12
Zitat von marius0702:
Nein bei allen checkbox componenten bei onclick oder onchange.
Die ListView-CheckBoxes sind aber keine TCheckBox-Komponenten ... . In der ListView geht auch OnChange.

[OT]
Zitat von marius0702:
Delphi-Quellcode:
procedure TForm1.CheckBoxMultiClick(Sender: TObject);
begin
  Case (Sender as TCheckBox).Tag of
    0: if CheckBox1.Checked then Listview1.items[0]:='Bla Bla';
    1: if CheckBox2.Checked then ...;
    2: if CheckBox3.Checked then ...;
    3: if CheckBox4.Checked then ...;
    4: if CheckBox5.Checked then ...;
    5: if CheckBox6.Checked then ...;
    6: if CheckBox7.Checked then ...;
    7: if CheckBox8.Checked then ...;
  end;
end;
Warum der gigantische Umweg
Delphi-Quellcode:
procedure TForm1.CheckBoxMultiClick(Sender: TObject);
var cb: TCheckBox;
begin
  if not (Sender is TCheckBox) then
     raise Exception.Create('Ich bin ein Fehler');
  cb := TCheckBox(Sender);
  ListView1.Items[cb.Tag].Caption := BoolToStr(cb.Checked), True);
end;
[/OT]
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Anthauri

Registriert seit: 1. Feb 2004
61 Beiträge
 
Delphi 6 Personal
 
#8

Re: TListView ind das selektieren

  Alt 16. Jul 2008, 17:20
Vielen Dank für die schnellen Antworten.

Die Variante mit den vielen IF's kann ich nicht anwenden, da die Anzahl der Zeilen in der Liste dynamsich zwischen 0 und 999999 liegt.
(das wären ziemlich viele IF's)

Das OnChange abzufragen geht glaube ich auch nicht, weil das auch dann ausgelöst wird, wenn sich etwas anderes in der Zeile ändert als der Inhalt der Checkbox

Das mit dem MouseUp werde ich mir ansehen. Dann muß ich nur noch beachten, dass die Checkbox auch per Tastatur verändert werden kann (Space) - aber da kann ja das KeyPress oder KeyDown benutzt werden.


Den Befehl mit dem Hittest kannte ich bisher noch nicht...man lernt halt nie aus....
  Mit Zitat antworten Zitat
Benutzerbild von cs.rumpelstilzchen
cs.rumpelstilzchen

Registriert seit: 16. Sep 2004
Ort: NRW
72 Beiträge
 
Delphi XE4 Professional
 
#9

Re: TListView ind das selektieren

  Alt 28. Okt 2008, 15:39
Hallo Anthauri,
weiss nicht, ob du das Problem schon gelöst hast,
ich habe das über das OnChange-Ereignis der ListView gemacht:

Delphi-Quellcode:
procedure Testwindow.LvChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
  if Change = ctState then
    if Item.Checked then....
end;
Ich hoffe, ich habe dein Problem richtig verstanden und konnte helfen...

So long
Jürgen
Der weiß, daß er nichts weiß, wie alle anderen auch nichts wissen.
Nur weiß er, was die anderen und auch er selbst noch lernen müssen.
(Novalis 1772 - 1801)
  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 06:10 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