デルファイを使ってTListViewのサブアイテムにアイコン/ bmpを描画したいと思います。しかし、私はそれを達成する方法を知らない。リストの最初の項目は正常に動作しますが、サブ項目に問題があります。DelphiのTListViewサブアイテムにbmp /アイコンを描画するにはどうすればいいですか?
答えて
みましたGamecat提案された解決策の後にして、コンポーネントのサイズを変更した後、再描画イベントを処理する深刻な問題があり、サブ項目は、私はフォントファミリを変更するために扱われ、私は三角形のような文字を使用Wingdingsフォントを使用して文字列なので、その後、私はちょうどそれが見えるようにフォントの色を変更し
:最後は私が2つの回避策を思い付きましたグリフのように。
TDataGridを最初から使用すると、セルの概念がわかります。実際には何も追加する必要はありません。イベントを再描画すると心配です。 (私には役に立たず、既存のコンポーネントにはすでに多くの機能が組み込まれているからです)。
TImageListコンポーネントを使用してイメージを保持し、それをlistviewsのSmallImagesプロパティに割り当て、サブアイテムのImageIndexを設定します。
CustomDrawSubItemイベントを使用できます。
以下の例では、テキストを無視して矩形を描画しています。残念ながら、それは右の列の矩形を取得する手間を少しですが、このアプローチは動作します:
procedure TForm.ListViewCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
var
r : TRect;
i : Integer;
begin
r := Item.DisplayRect(drBounds);
for i := 0 to SubItem-1 do begin
r.Left := r.Left + ListView.Columns.Items[i].Width;
r.Right := r.Left + ListView.Columns.Items[i+1].Width;
end;
case SubItem of
1 : ListView.Canvas.Pen.Color := clRed;
else
ListView.Canvas.Pen.Color := clBlue;
end;
ListView.Canvas.Rectangle(r.Left, r.Top, r.Right, r.Bottom);
DefaultDraw := False;
end;
ありがとう、私は試して、それは部分的に働いた。サブアイテム内に何かを描画することは可能ですが、その後にコンポーネントのサイズ変更または移動(TListView)後に列を描画する際に問題があります。 – tecnotalk
- 1. ankoのボタンにアイコン(描画可能)を設定するにはどうすればよいですか?
- 2. フォームに線を描画するにはどうすればいいですか?
- 3. ビッグビットマップ上にアイコンを描画するにはどうすればよいですか?
- 4. GtkDrawingArea - 描画可能にするにはどうすればいいですか?
- 5. カーソル(マウスポインタオブジェクト)をbmp画像の自動シーケンスにするにはどうすればいいですか?
- 6. アプリケーションにグラフを描画するにはどうすればよいですか?
- 7. iPhoneに線を描画するにはどうすればよいですか?
- 8. サブビューにテキストを描画するにはどうすればよいですか?
- 9. AdMobをキャンバスに描画するにはどうすればよいですか?
- 10. マップコントロールにルートを描画するにはどうすればよいですか?
- 11. JPanelにルーラーを描画するにはどうすればよいですか?
- 12. ビットマップにボールドテキストを描画するにはどうすればよいですか?
- 13. ベクトル描画アイコンのサイズはどれくらいですか?
- 14. カスタムボタンを描画するにはどうすればよいですか?
- 15. iOS描画アプリをズームするにはどうすればよいですか?
- 16. サブアイテムをリストで開くにはどうすればよいですか?
- 17. Android用Delphi 10でマーカー(TMapMarkerDescriptor)のアイコンを変更するにはどうすればよいですか?
- 18. Delphiでこれを行うにはどうすればいいですか?
- 19. FCM - アイコンを有効にするにはどうすればいいですか?
- 20. xamarinにアイコンを表示するにはどうすればいいですか?
- 21. ios5のようなコーナーグラブインジケーターをUIViewに描画するにはどうすればいいですか?
- 22. オブジェクトを再描画するときに画面をクリアするにはどうすればよいですか?
- 23. モーダルが複数回描画されないようにするにはどうすればよいですか?
- 24. `Creatable`の` x`アイコンをカスタマイズするにはどうすればいいですか?
- 25. アイコンをカーソルに付けるにはどうすればいいですか?
- 26. PCから画像をアップロードしてキャンバスに描画するにはどうすればよいですか?
- 27. voiceoverでiOSを指で「描画」できるようにするにはどうすればよいですか?
- 28. コントロールを再描画しないようにするにはどうすればよいですか?
- 29. WPFでCanvasに何千もの点を描画するにはどうすればいいですか?
- 30. UIViewコンテキストへの描画が消えないようにするにはどうすればよいですか?
彼は、ツリービューではなく、リストビューについて話しています。リストビューのサブアイテムは他のデータ列を形成し、Windowsリストビューはプライマリ列のアイコンのみを受け入れます。 –
私はちょうど確認するためにそれを試みた。それはDelphi 2007で動作します。 –
あなたの答えをありがとう。 TOndrejはTListViewコンポーネントを使用していると言いますが、Delphi 4でこれを行う必要があるという小さな制約があります。 :) – tecnotalk