AGB  ·  Datenschutz  ·  Impressum  







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

TListView - aktivieren einiger Checkboxen verhindern

Ein Thema von Marco Steinebach · begonnen am 24. Sep 2019 · letzter Beitrag vom 27. Sep 2019
Antwort Antwort
Marco Steinebach

Registriert seit: 4. Aug 2006
503 Beiträge
 
Delphi 5 Enterprise
 
#1

AW: TListView - aktivieren einiger Checkboxen verhindern

  Alt 24. Sep 2019, 09:45
Hallo,
Joa, onChanging hat brav allowChange.
Ich habe schon mit ctState rumgespielt, aber wenn ich auf
Code:
  if Change = ctState then
prüfe, wird das Event zwar für jedes select aufgerufen, aber nicht, wenn ich den Status einer Checkbox ändere - entweder, hab ich murx programmiert, oder was übersehen...

Viele Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.375 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TListView - aktivieren einiger Checkboxen verhindern

  Alt 24. Sep 2019, 10:11
Ich habe das gerade mal getestet.
ctState scheint auch gesetzt zu werden, wenn das Item selektiert wird. Das hat also nicht zwingend etwas mit der CheckBox zu tun.

Ich denke, das OnChanging ist für deinen Fall die richtige Wahl, aber die Bedingung muss verfeinert/geändert werden. Wenn du an den Items Daten (Data) hinterlegt hast, solltest du das zum Prüfen verwenden. Die Caption wäre auch noch eine Alternative.
Peter
  Mit Zitat antworten Zitat
Alt 25. Sep 2019, 04:28     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Marco Steinebach

Registriert seit: 4. Aug 2006
503 Beiträge
 
Delphi 5 Enterprise
 
#4

AW: TListView - aktivieren einiger Checkboxen verhindern

  Alt 25. Sep 2019, 11:12
Hallo Frühlingsrolle,
dein Code sieht ähnlich aus wie meiner, ich bin nur nicht auf's item.listview.checkboxes gekommen.
Aaaber
Ich kriege eine Windows-Schutzverletzung, und hab keine Ahnung warum, beim
Code:
  item.checked := false
Ich hab natürlich geschaut, Item ist nicht nil, also keine Idee, undzweitens wird das Event, gefühlt, 20 mal aufgerufen, wenn man die Liste durchläuft.
Ich hab den Code, nur zum Testen, mal abgewandelt:
Code:
procedure TAnwendereigenschaftenFormular.liModuleChanging(Sender: TObject;
  Item: TListItem; Change: TItemChange; var AllowChange: Boolean);
begin
  if (change = ctState) and item.listview.checkboxes then
  begin
    if item.index = 3 then // wie gesagt, nur zum testen...
    begin
      item.checked := false; // und genau hier knallt's
      allowChange := false;
       infobox ('onChanging!'); // nur 'ne verkapsele MsgBox
      end;
  end;
end;
Mir ist nicht klar, woher die Schutzverletzung kommt, und die kommt jedesmal, wenn ich die Liste durchwander...
Vielleicht hat ja noch jemand 'ne idee...

Herzliche Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.375 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TListView - aktivieren einiger Checkboxen verhindern

  Alt 25. Sep 2019, 11:25
Wenn du die Zeile, in der es knallt, weglässt, sollte es schon funktionieren.
Du setzt AllowChange ja auch auf false. Das bewirkt schon, dass die CheckBox nicht verändert wird.

Und natürlich wird das Event zig mal ausgelöst, weil du die CheckBox innerhalb der Methode änderst. Das löst das Event jedes mal wieder aus. Das dürfte auch der Grund für deine Schutzverletzung sein.
Peter

Geändert von Jasocul (25. Sep 2019 um 11:27 Uhr)
  Mit Zitat antworten Zitat
Alt 25. Sep 2019, 13:28     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.375 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TListView - aktivieren einiger Checkboxen verhindern

  Alt 25. Sep 2019, 13:53
Ohne das zu testen, behaupte ich einfach mal:
Das Event triggert durch die überflüssige Zeile immer wieder, bis zum Stack-Overflow.
Peter
  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 18:11 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