Zitat von
Helmi:
C kann ich ned entziffern
Na komm schon, das war doch noch sehr simpel...
Nachdem ich mich vor ein D7 geschwungen hatte, musst ich feststellen:
Da gibt's ja keinerlei Implementierung zum Abfangen eines Klicks auf die Checkboxes!
Auch ein Blick in die Soßen der
VCL brachte da nichts "hübsches" hervor"
Zum Bleistift gibt es noch nicht mal einen HitTest für die CheckBoxes!
Zitat von
VCL:
Delphi-Quellcode:
THitTest = (htAbove, htBelow, htNowhere, htOnItem, htOnButton, htOnIcon,
htOnIndent, htOnLabel, htOnRight, htOnStateIcon, htToLeft, htToRight);
Da aber die CheckBoxes wie ein StateIcon funktionieren, können wir das verwenden.
Delphi-Quellcode:
type
TForm1 = class(TForm)
...
private Indices2BeDisabled: set of 0..255;
...
end;
...
procedure TfrmDoSomething;
begin
...
Indices2BeDisabled := [1, 3, 5];
...
end;
procedure TfrmTest.lvTestChanging(Sender: TObject; Item: TListItem;
Change: TItemChange; var AllowChange: Boolean);
begin
AllowChange := not (TListView(Item.ListView).Checkboxes and
(ctState = Change ) and // StateIcon == CheckBox *g*
(Item.Index in Indices2BeDisabled));
end;
Damit könntest du festlegen bei welchen Items der User die CheckBox nicht setzen darf.
Nachtrag: Da der Typ SET nur 255 Elemente enthalten darf, würden damit auch nur 255 disabled Items möglich sein.