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

ドラッグできて位置を記憶するラベル

ドラッグできるラベルのクラス化でラベルをドラッグできるようにしましたが、フォームを閉じて次にフォームを開くと位置はデザイン時の設定に戻ってしまいます。

最終位置を記憶しておいて、次回開くときに反映させたいという希望は当然出てきますね。これを実現するサンプルを紹介します。
ドラッグできて位置を記憶するラベル

難易度:

概要

デザインビューに切り替えて、保存するという方法も考えらますが、複数ユーザーで共有して利用している場合は使えませんし、運用時にデザインビューに切り替えるというのはちょっと危険です。

そこで、移動後の位置をテーブルに保存しておいて、次回開くときにその位置に移動させるという方法をとることにします。

準備

ドラッグできるラベルのクラス化 のサンプルを元に改良します。

まず、コントロールの位置を格納するテーブルを作成します。

テーブル名 T_CtlPos

フィールド名データ型
FormNameテキスト型
ControlNameテキスト型
Top数値型(長整数)
Left数値型(長整数)

FormName と ControlName で複数フィールド主キーにします。

クラスモジュール

クラスモジュール clsDragableLabel を下記のように記述します。

clsDragableLabelだけでもいいのですが、今回はclsDragableLabelを Collection に格納するクラスも作成して、生成や破棄のコードを簡略化できるようにしてみました。

クラスモジュールを新規作成して下記のように記述して、clsDragableLabels として保存します。

フォームのコード例

読み込み時に生成したクラスをコレクションクラスに追加します。
読み込み解除時でコレクションクラスを破棄します。

サンプルファイルが下記からダウンロードできます。
FrmDragMoveCtlMemoryPos_07.zip (Access 2007-2010 形式 - 33kb)
FrmDragMoveCtlMemoryPos.zip (Access 2002-2003 形式 - 28kb)
FrmDragMoveCtlMemoryPos_2k.zip (Access 2000 形式 - 28kb)

拍手する

Leave a reply






Trackbacks

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