首先是代碼:
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 的新手,但是我學得很快,所以正如俗話所說,我全神貫注。
動態串列視圖充滿了可以選擇和通過電子郵件發送的專案。我使用戶能夠通過 mousedown 事件捕獲的滑鼠右鍵單擊來選擇多個專案。當用戶右鍵單擊一個專案時,我使用動態串列視圖中的 TImageObjectAppearance 專案顯示影像。如果用戶右鍵單擊顯示影像的當前選定專案,我想清除影像,通知用戶該專案已被取消選擇。在選擇或取消選擇時,我會遍歷所有專案,因為回圈的專案并不多(少于 100 個)。
我的問題是如何從 TImageObjectAppearance 中清除影像(上面代碼中的 lvServiceReports.Items[i].Data['Image6'] 是我要清除的影像)
uj5u.com熱心網友回復:
使用動態串列視圖,您可以訪問物件并投射它們。FMX TListview 有一個方法使它變得容易和簡單。
在你的情況下,我會使用:
lvServiceReports.Items[i].Objects.FindObjectT<TListItemImage>('Image6').Bitmap := nil;
這將清除影像。
如果要分配另一個影像,請確保再次創建它:
lvServiceReports.Items[i].Objects.FindObjectT<TListItemImage>('Image6').Bitmap := TBitmap.Create;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/467680.html
