掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
フォームのスクロールバーが移動した事を知るには? (ID:44892)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
初めまして。 ここ2週間ほど仕事で悩んでおり、ふと自宅で思いついた事をやってみたびですが、ちょっと解決しなさそうなのでお力をお貸し下さい。 OS:Windows7ProSP1(32ビット版) 言語:Delphi7Pro フォームの HorzScrollBar プロパティの Visible を True に設定し、フォーム中にフォームより横幅が大きいパネルコンポーネントを貼ってます。 パネルコンポーネントには同じ横幅を持つ StringGrid を貼り、垂直方向のスクロールバーを表示しています。 そこで、次のように、フォームの再描画イベントでグリッドの垂直方向のスクロールバーを表示しています。 procedure TForm1.FormPaint(Sender: TObject); begin StringGrid1.Width := Form1.HorzScrollBar.Position + Form1.Width -18; end; ところが、フォームをリサイズしてパネルごと Height プロパティに値を代入すると、フォームの再描画イベントが発生しなくなります。具体的には、 procedure TForm1.FormResize(Sender: TObject); begin Panel1.Height := Form1.Height; StringGrid1.Height := Panel1.Height; end; 上記のコードを追加すると、再描画イベントが発生しなくなり、意図した動きが出来ません。 スクロールバーコンポーネントを使え、と言われそうですが、プログラムを複雑にしたくない(保守を容易にしたい)ので、なるべく簡潔で簡単な方法をとろうとしています。 OS と Delphi のバージョン(ちなみに Delphi7 はアップデータをかけていません。かけようと思うのですが、ボーランド社がなくなったので、出来ません)の問題なんでしょうか。 で、ちょっと考え方を変えて、フォームの水平スクロールバーが動いたタイミングで再描画をかければ問題ないと考え、色々調べましたが、自宅では限界です。 かと言って、職場でこの問題に割ける時間もないので、何かご存じの方、ヒントでもいいので教えていただけないでしょうか。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.