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

ドラッグできるラベルのクラス化

前回 マウスドラッグで移動できるコントロール で移動できるラベルを作成しましたが、このようなラベルを複数配置したい場合もあると思います。その場合、ラベルの数だけ、MouseDown、MouseMove、MouseUp イベントプロシージャを記述することになりますが、ちょっと面倒ですよね。

関数(Function)にしてイベントプロパティに設定する方法(ボタンクリックでテキストボックスに文字入力 その1等で紹介)ではイベント引数が使えませんので、今回は利用できません。

このような場合は、クラスモジュールを使ってラベルをクラスにします。

難易度:

メニューから[挿入]-[クラスモジュール]をクリックして開いたVBA画面で下記のように記述します。

前回の記事のフォームモジュールと比べてみてください。内容的にはほとんど同じですね。違う部分は、下記の部分
イベント付きのラベルオブジェクトを宣言して、フォーム上のコントロールと接続するためのメソッド(Bind)を記述してます。

あとは、フォームモジュールでは実際のラベル名になっている部分を宣言したラベルオブジェクト変数 mLbl に置き換えるだけです。

コードを記述したら保存します。名前を聞かれますので、clsDragableLabel と入力してください。

フォームにラベルを3つ配置します。名前は、lbl0, lbl1, lbl2 とします。あとは、フォームモジュールに下記のようなるように、宣言、イベントプロシージャを記述します。

これで3つのラベルはドラッグ移動できるようになります。フォームモジュールがスッキリしますね。

サンプルファイルが下記からダウンロードできます。
FrmDragMoveCtl_07.zip (Access 2007-2010 形式 - 32kb)
FrmDragMoveCtl.zip (Access 2002-2003 形式 - 19kb)
FrmDragMoveCtl_2k.zip (Access 2000 形式 - 19kb)


拍手する

Leave a reply






Trackbacks

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