它可以使用自定義繪製的VCL TListView的,它允許你以色個別項目(使用把一個TColor
在項目的Data
的模模糊糊的方法here is an example)FireMonkey TListView:如何在運行時着色項目?
然而,在XE7 FMX版本的TListVew
控件,沒有OnCustomDraw
事件。我嘗試了一些選擇,但似乎沒有改變顏色。我該怎麼做呢?
它可以使用自定義繪製的VCL TListView的,它允許你以色個別項目(使用把一個TColor
在項目的Data
的模模糊糊的方法here is an example)FireMonkey TListView:如何在運行時着色項目?
然而,在XE7 FMX版本的TListVew
控件,沒有OnCustomDraw
事件。我嘗試了一些選擇,但似乎沒有改變顏色。我該怎麼做呢?
您可以使用TListViewItem.Objects.DetailObject.TextColor
屬性更改每個列表項文本的顏色。但是沒有用於更改每個列表項背景顏色的本地屬性。
因此到TListView Items background color:
如何改變的TListView項的背景顏色?
...
你必須使用一種風格。因此,添加樣式表或者使用Delphi自帶的 樣式之一,或者右鍵單擊列表視圖「編輯自定義 樣式」以創建樣式。在樣式手冊上點擊以打開樣式 並修改listview樣式。
但是這並不能解釋如何對每個列表項應用不同的樣式。
每個項目都有一個OnPaint事件。分配如下的事件處理程序。
procedure TfrmModelArchiver.lst1Paint(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
begin
Canvas.Fill.Color := TAlphaColorRec.Red;
Canvas.FillRect(ARect, 0, 0, AllCorners, 0.2);
end;
在此事件處理程序中,不透明度設置爲0.2,以便文本可以顯示。如果將不透明度設置爲1,則需要編寫文本以及繪製背景,如下所示。
procedure TfrmModelArchiver.lst1Paint(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
begin
Canvas.Fill.Color := TAlphaColorRec.Red;
Canvas.FillRect(ARect, 0, 0, AllCorners, 1);
Canvas.Fill.Color := TAlphaColorRec.Black;
Canvas.FillText(ARect, 'some text', False, 1, [],
TTextAlign.taLeading);
end;
Here是解決方案。
這個現代的ListView組件可用於Delphi 10 Berlin,FireMonkey在Android,IOS,OSX和Windows上。一個很好的功能是它具有水平和垂直模式。 SetColorItemSelected,SetColorItemFill,SetColorBackground,SetColorItemSeparator,SetColorText,SetColorTextSelected,SetColorTextDetail,SetColorHeader,SetColorTextHeader和許多其他屬性。
你沒有重新開放任何東西。你正在問一個關於新話題的新問題。這個新問題是關於FMX的。 – 2015-03-02 19:16:04
舊的問題是關於VCL和Windows。你的新問題是關於完全不同的UI框架(FMX)和完全不同的操作系統(Android)。 – 2015-03-02 21:24:35
已編輯 - 您在詢問FMX控制。 FMX的工作方式與VCL完全不同,並不是事件已經結束,但它不存在(也沒有)。相反,你需要一種不同的方法。重寫以表明這一點。 – 2015-03-02 22:10:55