【发布时间】:2016-04-20 15:06:23
【问题描述】:
我有一个带有 firemonkey 列表视图的表单。此列表视图包含多个项目。
使用 OnItemClick 过程,我尝试在每个项目都可见列表视图附件类型(复选标记)时启用按钮,并在所有项目上不可见附件时禁用按钮。
我有以下代码可以在单击时使附件在每个项目上可见。
Tform.ListView1ItemClick(const Sender: TObject; const AItem: TListViewItem);
begin
if AItem.Objects.AccessoryObject.Visible then
begin
AItem.Objects.AccessoryObject.Visible := False;
end
else
begin
AItem.Objects.AccessoryObject.Visible := True;
end;
end;
然后我添加了以下内容,认为它会给我所追求的。
for i := 0 to AItem.Count -1 do
begin
if (AItem.Objects.AccessoryObject.Visible) then
begin
Button1.Enabled := True
end else Button1.Enabled := False;
对于在列表视图中单击的每个项目,附件将可见,再次单击该项目将隐藏附件。因此,如果配件在 1 个或更多项目上可见,则该按钮将被启用,如果该配件在所有项目上都被移除,则该按钮应被禁用。
【问题讨论】:
-
在第二个代码中你有
for但总是使用相同的元素 -
也许应该类似于
AItem[i].Objects.AccessoryObject.Visible。加上你的逻辑不清楚...... -
block1中的代码应该压缩成:
begin AItem.Objects.AccessoryObject.Visible:= not(AItem.Objects.AccessoryObject.Visible); end; -
很抱歉不清楚。对于在列表视图中单击的每个项目,附件将可见,再次单击项目将删除附件。因此,如果配件在 1 个或更多项目上可见,则该按钮将启用,如果在所有项目上移除该配件,则该按钮将被禁用。
标签: delphi firemonkey delphi-xe8