0

マウスが TListView アイテムの上に移動すると、青いアウトラインが表示されます (図を参照)。どうすれば削除できますか?

私が知っている唯一の方法は、すべてのアイテムの描画を手動で行うことです.しかし、おそらくもっと簡単な方法はありますか? HotTrack=False を試してみましたが、役に立ちません :(

Item3 はこの青いアウトラインを持っています

4

1 に答える 1

3

その絵は、特別な探検家のテーマによって行われます. SetWindowTheme(Handle, 'explorer', nil)これはinへの呼び出しによってコントロールに追加されTCustomListView.CreateWndます。デフォルトのテーマを使用すると、ホット トラッキングは得られません。これは、エクスプローラー ウィンドウのテーマを元に戻すことで実現できます。たとえば、インターポーザ クラスでは次のようになります。

type
  TListView = class(ComCtrls.TListView)
  protected
    procedure CreateWnd; override;
  end;
....    
procedure TListView.CreateWnd;
begin
  inherited;
  SetWindowTheme(Handle, nil, nil);
end;

もちろん、エクスプローラー テーマが追加する他のすべてのものも失われます。

私が知る限り、エクスプローラー テーマのホット トラッキング ペインティングを抑制できる通知メッセージはありません。

于 2013-03-01T09:04:15.020 に答える