从动态列表视图中清除 ImageObjectAppearance 项
Clearing an ImageObjectAppearance item from Dynamic Listview
首先是代码:
procedure TfrmJob.lvServiceReportsMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Single);
var
i: Integer;
rct: TRectF;
begin
if Button = TMouseButton.mbRight then
for i := 0 to lvServiceReports.Items.Count-1 do
Begin
rct := lvServiceReports.GetItemRect(i);
if ( rct.Bottom >= Y) and (Y >= rct.Top ) then
if lvServiceReports.Items[i].Data['Image6'].IsEmpty
then lvServiceReports.Items[i].Data['Image6'] := imgEmailSelect.Bitmap
else ;//lvServiceReports.Items[i].Data['Image6'] := ??
end;
end;
我对 VCL 的 Firemonkey 还是个新手,但是我学得很快,所以我洗耳恭听。
动态列表视图充满了可以select编辑和通过电子邮件发送的项目。我允许用户通过 mousedown 事件捕获的鼠标右键单击来 select 多个项目。
当用户右键单击一个项目时,我在动态列表视图中使用 TImageObjectAppearance 项目显示图像。如果用户右键单击当前显示图像的 selected 项目,我想清除图像,通知用户该项目已被取消 selected。我在 selecting 或 unselecting 时遍历所有项目,因为要循环的项目不多(少于 100 个)。
我的问题是如何从 TImageObjectAppearance 中清除图像(上面代码中的lvServiceReports.Items[i].Data['Image6'] 是我要清除的图像)
使用动态列表视图,您可以访问对象并转换它们。 FMX TListview 有一个方法可以让它简单易行。
在你的情况下我会使用:
lvServiceReports.Items[i].Objects.FindObjectT<TListItemImage>('Image6').Bitmap := nil;
这将清除图像。
如果您想分配另一张图片,请确保重新创建它:
lvServiceReports.Items[i].Objects.FindObjectT<TListItemImage>('Image6').Bitmap := TBitmap.Create;
首先是代码:
procedure TfrmJob.lvServiceReportsMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Single);
var
i: Integer;
rct: TRectF;
begin
if Button = TMouseButton.mbRight then
for i := 0 to lvServiceReports.Items.Count-1 do
Begin
rct := lvServiceReports.GetItemRect(i);
if ( rct.Bottom >= Y) and (Y >= rct.Top ) then
if lvServiceReports.Items[i].Data['Image6'].IsEmpty
then lvServiceReports.Items[i].Data['Image6'] := imgEmailSelect.Bitmap
else ;//lvServiceReports.Items[i].Data['Image6'] := ??
end;
end;
我对 VCL 的 Firemonkey 还是个新手,但是我学得很快,所以我洗耳恭听。
动态列表视图充满了可以select编辑和通过电子邮件发送的项目。我允许用户通过 mousedown 事件捕获的鼠标右键单击来 select 多个项目。 当用户右键单击一个项目时,我在动态列表视图中使用 TImageObjectAppearance 项目显示图像。如果用户右键单击当前显示图像的 selected 项目,我想清除图像,通知用户该项目已被取消 selected。我在 selecting 或 unselecting 时遍历所有项目,因为要循环的项目不多(少于 100 个)。
我的问题是如何从 TImageObjectAppearance 中清除图像(上面代码中的lvServiceReports.Items[i].Data['Image6'] 是我要清除的图像)
使用动态列表视图,您可以访问对象并转换它们。 FMX TListview 有一个方法可以让它简单易行。
在你的情况下我会使用:
lvServiceReports.Items[i].Objects.FindObjectT<TListItemImage>('Image6').Bitmap := nil;
这将清除图像。
如果您想分配另一张图片,请确保重新创建它:
lvServiceReports.Items[i].Objects.FindObjectT<TListItemImage>('Image6').Bitmap := TBitmap.Create;