Hallo Zusammen,
Ich habe eine ListView mit Daten gefüllt. Die Items sind DynamicAppearances mit TextObject und AccessoryObject.
Das AccessoryObject ist beim erstellen AccessoryType Detail.
Beim Anklicken des AccessoryObject ändert sich der AccessoryType in Checkmark, beim nochmal Klicken wieder zurück in Detail.
Das klappt auch. Aber wenn ich aber mit der Maus die Form1 ändere, ändert sich der AccessoryType in Detail.
Komisch ist, ich ändere beim Klick gleichzeitig Fontfarbe und Fontaussehen des Textes. Das bleibt aber.
Delphi-Quellcode:
procedure TForm1.ListView1ItemClickEx(const Sender: TObject; ItemIndex: Integer;
const LocalClickPos: TPointF; const ItemObject: TListItemDrawable);
begin
if ItemObject is TListItemAccessory then
begin
ListView1.Items.SetChecked(ItemIndex, not ListView1.Items[ItemIndex].Checked);
end;
UpdateItem;
end;
procedure TForm1.UpdateItem;
var AAccessory : TListItemAccessory;
AListItemText : TListItemText;
begin
AAccessory := ListView1.Items[ListView1.ItemIndex].Objects.FindObjectT<TListItemAccessory>('Accessory2');
if Assigned(AAccessory) then
if ListView1.Items[ListView1.ItemIndex].Checked then
begin
AAccessory.AccessoryType := TaccessoryType.Checkmark;
end
else
begin
AAccessory.AccessoryType := TaccessoryType.Detail;
end;
AListItemText:=ListView1.Items[ListView1.ItemIndex].Objects.FindObjectT<TListItemText>('Text3');
if Assigned(AListItemText) then
if ListView1.Items[ListView1.ItemIndex].Checked then
begin
AListItemText.Font.Style:=[TFontStyle.fsBold,TFontStyle.fsUnderline,TFontStyle.fsItalic];
AListItemText.TextColor := TAlphaColor($FFFF4500);
end
else
begin
AListItemText.Font.Style:=[];
AListItemText.TextColor := TAlphaColor($FF000000);
end;
end;
Wie kann ich das machen, dass auch der AccessoryType bleibt?
Ach ja, Delphi 10.4.2.