MS Access Tips/Sample and VBA and Blog customize etc...

マウスドラッグで範囲指定

Access Club 初級者 Forum の No.65891 ガントチャートでマウスドラッグによる範囲指定
のために作成したサンプルです。

ガントチャート(横棒グラフ)をマウスドラッグで範囲指定します。

難易度:

コントロールが最初は立体表示で、マウスでドラッグするとくぼみになり、選択されたことにするという仕様です。コントロールはテキストボックスを多数配置すると重くなるので、ラベルを使います。

新規フォームにラベルを31個配置します。名前は、ラベル0、 ラベル1、ラベル2、・・・・ラベル30 となります。

ラベルの幅は、0.49cm にして、隙間無く横一列に並べます。

その一列のラベルにピッタリ重なるようにコマンドボタンを配置します。コマンドボタンの「透明」プロパティを「はい」にします。名前は、Cmd1 とします。

フォームモジュールは下記のようになります。

デザインビューで cmd1 の「マウスクリック時」「マウス解放時」には、[イベント プロシージャ] を設定しておいて、「マウス移動時」欄は空白にしておきます。

ポイントは、コマンドボタンを重ねることで、コマンドボタンのイベントだけの処理していることです。各ラベルのイベントに処理を設定する必要がなくなるので、コードがシンプルになります。

もうひとつのポイントは、マウスボタンが押されているときだけ、OnMouseMove の処理をする方法です。よくフラグを使ってマウスボタンが押されているかどうか判断する方法が使われますが、こうするとマウスがボタン上にあるとき常にMouseMoveイベントが発生することになります。OnMouseMoveプロパティを "" にしておくと、MouseMoveイベントプロシージャが記述してあっても、MouseMoveイベントは発生しません。マウスをクリックしたとき、OnMouseMoveプロパティに "[イベント プロシージャ]" を代入することでMouseMoveイベントが発生するようになります。

これで、マウスをドラッグすると、ドラッグした部分はくぼんで色がつき、選択されたということなります。選択された部分をもう一度ドラッグすると立体表示に戻り、選択が解除されたということになります。

非連結での表現になりますので、この選択結果をテーブルに格納したり、テーブルから反映させたりするコードは別途必要になります。ガントチャート等のフォームのユーザーインタフェイスの一つのサンプルとしてご参考にしてください。

サンプルファイルが下記からダウンロードできます。
FrmGanttChart_07.zip (Access 2007-2010 形式 - 27kb)
FrmGanttChart.zip (Access 2002-2003 形式 - 30kb)
FrmGanttChart_2k.zip (Access 2000 形式 - 29kb)


拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/49-fd3109ff
該当の記事は見つかりませんでした。