2011-08-15 88 views
1

我使用OwnerDraw繪製列表視圖。我需要畫第一列。但我不明白如何。Delphi:列表視圖的顏色列

我想:

procedure TFrame6.DownloadListCustomDraw(Sender: TCustomListView; 
    const ARect: TRect; var DefaultDraw: Boolean); 
    var 
     R: TRect; 
    begin     
     DefaultDraw := False; 
     Sender.Canvas.Brush.Color := $F7F7F7; 
     Sender.Canvas.Brush.Style := bsSolid; 
     R := ARect; 
     R.Right := ListView_GetColumnWidth(DownloadList.Handle, DownloadList.Columns[0].Index); 
     Sender.Canvas.FillRect(R); 
     DefaultDraw := True; 
    end; 

但我籠絡項目。如何正確繪製,項目和背景?

謝謝!

+1

我建議你閱讀[這個delphiDabbler文章](http://www.delphidabbler.com/articles?article=16),並希望它包含足夠的信息來解決您的問題。我發表評論而不是回答,因爲它在1分鐘內被Google搜索到了。 – ThinkJet

+0

謝謝!我讀過。 「Delphi的TListView的OnCustomDrawXXX事件處理程序可以對列表視圖控件的外觀進行微小的更改,它們可以讓開發人員避免如果只想對其外觀進行一些調整,那麼開發人員就不必讓所有者去繪製控件。我使用OwnerDraw。 – maxfax

+0

請滾動整個頁面查找示例。我認爲你可以找到滿足你需求的人。例如。 [示例1](http://www.delphidabbler.com/articles?article=16&part=1#eg1)顯示如何更改背景和[示例4](http://www.delphidabbler.com/articles?article= 16&part = 1#eg4)顯示可以更改項目外觀的點。 – ThinkJet

回答

1

摘要:

我建議你閱讀this delphiDabbler article,並希望它包含足夠的信息來解決問題。例如。 Example 1顯示如何更改背景以及Example 4顯示可以更改項目外觀的點。

小提示:如果不希望繪製文本,請不要在處理程序結束時將DefaultDraw恢復爲True。

1

我建議你使用VirtualStringTree,如果你想在列表上做很多定製。它易於使用,幾乎任何事情都是可能的,最重要的是免費軟件。該組件可以在Soft-Gems下載和幾個例子可以發現,從評論here

+0

謝謝,我使用列表視圖:) – maxfax

+0

@maxfax,VirtualStringTree比ListView或TreeView更能夠自定義。看看例子,看看。 Delphi IDE中的許多對話框都基於這個組件。 –

+0

對不起,我在詢問列表視圖。但是當我編輯代碼時,我從樹視圖中發佈了一個事件。所以現在一個事件是正確的。 – maxfax

相關問題