2

Windows 7 の VirtualTreeView コンポーネントに問題があります。TVirtualStringTree を追加し、OnGetImageIndexイベントを使用して、常にデバッガーのゼロ以外の値であるImageIndexを割り当てました。

VirtualStringTree は、Imagesプロパティとして 16x16 アイコンを持つTImageListを使用します。

Windows XP では正常に動作し、Windows 7 では通常のアイコンの上に TImageList のインデックス 0 のアイコンが重なっています。Windows 7 で XP と同じプログラムを実行しているため、コードは同じですが、描画は異なります。

この画像は問題を示しています。

仮想ツリービューの問題

灰色の三角形のアイコンのインデックスは 0 で、フォルダ アイコンのインデックスは 5 です。

これは VirtualStringTree のバグですか? どうにかしてこれを回避することはできますか?

リポジトリから最新の VirtualTreeView バージョンを使用しています。

4

1 に答える 1

8

OnGetImageIndexイベント ハンドラーで、パラメーターに注意してくださいKind: TVTImageKind。必要に応じて割り当てImageIndex(通常、これはikNormalと のikSelected値のみ)、それ以外の場合は -1 を割り当てます。

たとえばKind、値が の場合に有効な画像インデックスを割り当てるikOverlayと、通常の画像の上にオーバーレイ画像が描画されます。(これはあなたの問題に関連している可能性があります。)

于 2011-11-17T18:24:05.303 に答える