- - PR -
【VB6】スクロールバーで32ビット値(Long値)を扱いたい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-10-30 20:14
初めて投稿させていただきます。
VB6で、スクロールバーコントロールを使用して、 32ビット値(Long値)を扱う方法を考えています。 行ないたい操作は、0〜1000000のような大きな値に対して、 スクロールバーのツマミと端のボタンを利用して、 値を細かく変更させたい、といった具合です。 ところが、VB6標準のスクロールバーコントロール (VScrollBar/HScrollBar)では、16ビット値(Integer値) しか扱えません。 なにか方法は無いものかといろいろ検索したのですが、 解決策は見つかりませんでした。 この件について解決策やヒントになる情報をお持ちの 方がおりましたら、ご教授頂きたいと思います。 (当方は、VB6、C言語、Win32API、を業務で使用しており、 これらに関してある程度の知識があります。) 以上、よろしくお願いいたします。 | ||||
|
投稿日時: 2006-10-30 20:35
0〜1000000に対して「1」刻みで設定したいということでしょうか?相当に扱いにくいと思いますが、そのあたりは大丈夫なんですか(老婆心)。 | ||||
|
投稿日時: 2006-10-30 20:38
画面のサイズは何ピクセル? 仕様考え直したほうがいいよ。 | ||||
|
投稿日時: 2006-10-31 10:29
shimixさん、未記入さん、回答ありがとうございます。
お二人の御指摘通り、一般的な画面サイズに対して0〜1000000という範囲は 桁外れに大きく、一見扱いにくいことは認識しております。 shimixさんの書き込み(2006-10-30 20:35)より:
その通りです。 行ないたい処理の説明が足りなかったので、追記します。
ユーザーコントロールで作れないか模索したのですが、 お恥ずかしながら当方はユーザーコントロール製作の経験がないこともあり、 条件を満たす物に到達できていません。 (そもそもユーザーコントロール内で標準スクロールバーを使ったら同じ結果にしかならない?) なにか良いアイデアはないでしょうか。 | ||||
|
投稿日時: 2006-10-31 10:49
ユーザコントロールにするかしないかは別として、
スクロールバー「みたいなもの」を、コントロールを組み合わせて作ることになるのではないかと。 ボタン ドラッグ用バー ボタン の3つを並べて、それぞれにイベントを書いていくしか。 ボタンが押されたらタイマーを活性化させて、タイマーで値を±1し続けるように作っておくとか。 | ||||
|
投稿日時: 2006-10-31 11:06
APIレベルでは32bit値を扱えるので、GetScrollInfo APIとSetScrollInfo APIを直接利用し、オーナードローと同じ要領でWM_VSCROLLとWM_HSCROLLを自前で処理すれば出来なくは無いはずです・・・。でも、それをVB6.0で書きたいとは思えません。 mioさんのようにボタンなどを配置して自前のコントロールを作ったほうが、良い結果を得られそうに思います。 | ||||
|
投稿日時: 2006-10-31 11:23
僕なら、次のような方法を検討します。 (1) スクロールバーではなく、機能を満たすことができる扱いやすい方法を検討する。 (2) スクロールバーと同じものをユーザーコントロールで自作する。 (番外編) 既存のスクロールバーを使ったトリッキーな処理を行うw #番外編が楽しそうですが、仕事なら手堅く(1)→(2)の順で検討しますね。 _________________ R・田中一郎 - R.Tanaka.Ichiro’s Blog | ||||
|
投稿日時: 2006-10-31 12:08
mioさん、アイデアありがとうございます。
mioさんの書き込み(2006-10-31 10:49)より:
この方法は以前少しだけ試したことがあるのですが、当方のセンスがないためか、 見た目と操作性(特に操作性)がイマイチでしたので、別の方法を検討していました。 もう一度、本腰を入れての作り直しを検討してみます。 |