TListViewを継承して社内用の汎用コンポーネントを作っていて、
どうしてもカラムヘッダのサイズ変更時に再描画をしたいのですが、
どのイベントをoverrideしたらイベントを捕まえられるのでしょうか?
ColumnDraggedかな?とも思ったのですが、
これはヘッダをドラッグして移動した場合ですよね・・。
見落としがあるかもしれませんが、
ヘルプで1個ずつ調べてみたところ、それらしいものがないような・・。
ご教授頂ければ幸いですm(__)m
環境書き忘れました。
Delphi 6 Ent + XP Pro SP2 です。
イベントはないようですね。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=032387
ここに参考になるソースがありました。
西野さん。ありがとうございます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;
ツイート | ![]() |