TListViewのカラム変更時に発生するイベントは?

解決


きりり  2006-01-12 15:03:12  No: 19597  IP: 192.*.*.*

TListViewを継承して社内用の汎用コンポーネントを作っていて、
どうしてもカラムヘッダのサイズ変更時に再描画をしたいのですが、
どのイベントをoverrideしたらイベントを捕まえられるのでしょうか?

ColumnDraggedかな?とも思ったのですが、
これはヘッダをドラッグして移動した場合ですよね・・。
見落としがあるかもしれませんが、
ヘルプで1個ずつ調べてみたところ、それらしいものがないような・・。

ご教授頂ければ幸いですm(__)m

編集 削除
きりり  2006-01-12 15:04:15  No: 19598  IP: 192.*.*.*

環境書き忘れました。
Delphi 6 Ent + XP Pro SP2 です。

編集 削除
にしの  2006-01-12 15:17:24  No: 19599  IP: 192.*.*.*

イベントはないようですね。

http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=032387
ここに参考になるソースがありました。

編集 削除
きりり  2006-01-12 18:46:49  No: 19600  IP: 192.*.*.*

西野さん。ありがとうございますm(__)m
ちょっと悪戦苦闘しましたが、教えて頂いたサイトを参考に以下のソースで実現できました。

constructor TListViewEx.Create(AOwner: TComponent);
begin
  //** 他の処理(省略) **//

  // コントロールの再描画の際に出る「ちらつき」を防止する
  Self.DoubleBuffered := True;
end;

procedure TListViewEx.WMNotify(var Message: TWMNotify);
begin
  with TWMNotify(message) do
  begin
    if (Msg = WM_NOTIFY) and (NMHdr^.code = HDN_ITEMCHANGEDW) then
    begin
      // 再描画
      Self.Refresh;
    end;
  end;

  inherited;
end;

編集 削除