掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
フォームのスクロールバーが移動した事を知るには? (ID:44893)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ちょっと強引ですが・・・ type TForm1 = class(TForm) ・・・略・・・ private { Private 宣言 } OriginalProc:TWndMethod; procedure SubclassProc(var Msg:TMessage); procedure WMHScroll(var Msg:TMessage); public { Public 宣言 } end; ・・・略・・・ procedure TForm1.FormCreate(Sender: TObject); begin OriginalProc := Form1.WindowProc; Form1.WindowProc := SubclassProc; end; procedure TForm1.FormResize(Sender: TObject); begin Panel1.Height := Form1.Height; StringGrid1.Height := Panel1.Height; end; procedure TForm1.FormPaint(Sender: TObject); begin StringGrid1.Width := Form1.HorzScrollBar.Position + Form1.Width -18; end; procedure TForm1.WMHScroll(var Msg: TMessage); begin FormPaint(nil); end; procedure TForm1.SubclassProc(var Msg: TMessage); begin OriginalProc(Msg); case Msg.Msg of WM_HSCROLL: WMHScroll(TMessage(Msg)); end; end; とコーディングしたところ、解決しました。 フォームの水平スクロールバーが動くと WM_HSCROLL メッセージが発生するので、そのタイミングでフォームの再描画イベントを強制的にコールしてます。 ハッキリ言って余り良い解決法ではありません。これよりもより良い解決法があれば、ご教授下さい。お願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.