2011-08-15 4 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分でグーグルであるので、答えではなくコメントを投稿する。 – 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

関連する問題