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

フォームを2分割して境界線をドラッグしてリサイズ

フォームが左右に2分割されていて、その境界線をマウスでドラッグして左右のペインのサイズを調整する機能を実装したい。

VBなどでは Splitterコントロールで実現できる機能ですね。AccessのVBAではそのようなコントロールはないので、自前でコーディングすることになりますね。

マウスドラッグに関しては、以前の マウスドラッグで移動できるコントロール で紹介しましたが、この応用で簡単に実装できます。

SplitterAni.gif

難易度:

まずはラベルとテキストボックスで

フォームの右半分にテキストボックスを一つ、その右横に縦長にラベルを配置します。標題は空白、立体表示は「浮き出し」、名前を lblSplitter とします。

Splitter1.png

フォームモジュールに下記のようにコードを記述します。

これで、境界線(lblSplitter)をドラッグするとそれにつれて テキスト1 の幅が変更されます。意外とシンプルなコードで実現できますね。

右側にもテキストボックスを

さらに境界線の右側にもテキストボックスを配置して、そちらもリサイズできるようにしてみます。こちらは、移動とリサイズの両方をする必要があるので少し面倒です。上記のマウスボタン移動時に下記のように3行追加します。

マウスカーソルを左右矢印に

ユーザーにドラッグでサイズ変更できることをアピールするために、lblSplitter上にマウスが来たらカーソルが左右矢印に変わるようにします。これは、WinAPIのLoadCursor, SetCursorを使いますので、標準モジュールで宣言して利用できるようにします。

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

あとは、境界線を移動できる範囲を制限するコードを追加する必要がありますね。左側のペインの最小幅、また右側のペインの最小幅を設定してそれ以上は移動しないようなコードを追加します。具体的コードはサンプルファイルの「フォーム3」を参照ください。

さらに、以前の記事 フォームのサイズの変更に追随するコントロール の仕様も追加したサンプルも作成しました。サンプルファイルの「フォーム4」を参照してください。

サンプルMDB が下記からダウンロードできます。
FrmResizeSplit_07.zip (Access 2007 形式 - 23kb)
FrmResizeSplit.zip (Access 2002-2003 形式 - 27kb)
FrmResizeSplit2k.zip (Access 2000 形式 - 26kb)

拍手する

Leave a reply






Trackbacks

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