- PR -

カスタマイズ可能な画面レイアウト

1
投稿者投稿内容
みずたまり
会議室デビュー日: 2007/11/26
投稿数: 10
投稿日時: 2008-05-13 12:14
お世話になります。
VBで、画面内に配置した全てのコントロール(ボタン、テキスト、etc)などの
配置(座標、サイズ)を、ユーザがマウス操作で、自由に編集できるような仕組みを
作りたいのです。
ユーザ毎に異なる画面レイアウトにより、プログラムの変更をなくしたいというのが
意図です。
このような仕組みの難易度、実現方法などが解る方、ご教授ください。
よろしくお願い致します。
ぴんふ
ベテラン
会議室デビュー日: 2006/07/13
投稿数: 80
投稿日時: 2008-05-13 13:44
こんにちは。ぴんふです。

実現は可能で難易度も高くはないですが、保守面・運用面に不安を感じる仕様ですが・・・。

単に移動させるだけなら、移動させたいコントロールについて
1.Formロード時
マウスが押されてるよフラグ(Formクラスのprivate変数として宣言しておく)をFalseに
2.MouseDown時
(1)保存用の座標(Formクラスのprivate変数として宣言しておく)にフォームのMousePositionを保存
(2)マウスが押されてるよフラグをTrueに
3.MouseMove時
(1)マウスが押されてるよフラグがTrueならば
その時点のフォームのMousePositionと2.(1)の保存用の座標の差分をコントロールの座標に加算し、その時点のフォームのMousePositionで保存用の座標を更新。
4.MouseUp時
マウスが押されてるよフラグ(Formクラスのprivate変数)をFalseに
で、とりあえず可能です。
(VB.NETでやってみた結果です)

私は試しませんでしたが、工夫すべき点としては
・マウスがフォームの外に出るときの制御
・移動させたコントロールの座標情報を設定ファイルなどに保存
くらいでしょうか。

私も詳しくはないですが、Formやコントロール上の座標制御の勉強にはなると思います。

3.(1)に「の差分」追記しました。

[ メッセージ編集済み 編集者: ぴんふ 編集日時 2008-05-13 14:10 ]
ぴんふ
ベテラン
会議室デビュー日: 2006/07/13
投稿数: 80
投稿日時: 2008-05-13 13:49
おっと書き忘れ。
実運用モードと画面カスタマイズモードみたいなのを用意して制御しないと、
たとえばボタンを移動させたときなどに業務処理が走ってしまいますのでご注意を。
otf
ベテラン
会議室デビュー日: 2006/08/04
投稿数: 91
投稿日時: 2008-05-13 13:53
Accessじゃだめなんですか?
みずたまり
会議室デビュー日: 2007/11/26
投稿数: 10
投稿日時: 2008-05-13 14:48
皆様、返信ありがとうございます。
とても参考になります。
後の問題は、各コントロールのサイズ変更なのですが、
これは簡単にはできないのでしょうか?
よろしくお願い致します。
ぴんふ
ベテラン
会議室デビュー日: 2006/07/13
投稿数: 80
投稿日時: 2008-05-13 15:11
ぴんふです。

あぁ・・・サイズも変更したいのね。
「VB.NET 実行中 コントロール サイズ 変更」でググったら
http://dobon.net/vb/bbs/log3-25/15372.html
が出てきました。検索って便利ですね。

ここに載ってるのは
移動とサイズ変更の両者を実現するクラスのようです。
中ほどにサンプルのURLと使用例があります。C#なのであくまでVBというのならコンバートが必要ですが・・・。
著作権については不明なので商用としてお使いになるのならご注意を。

でもってこちらも参考にしてください・・・
http://www.hyuki.com/writing/techask.html
質問に開発環境とか何をどこまで調べたかとか書いてなかったんで。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2008-05-13 16:08
引用:

VBで、画面内に配置した全てのコントロール(ボタン、テキスト、etc)などの
配置(座標、サイズ)を、ユーザがマウス操作で、自由に編集できるような仕組みを
作りたいのです。



全部、というのはやめておいたほうがよいかと思います。
かなりめんどくさいです。

UI的にも、自由度が増えるのは一概にいいことばかりではありません。
再検討を強くオススメしますが…。

どうしてもというのなら、
.Netの標準のデザイナ周りの仕組みを使ってしまうと比較的楽です。
「デザイン時サポート」などで調べるとよいでしょう。

特定のごく一部のコントロールのみという場合は、
普通にマウスイベントなどで実装できます。
こちらはだいぶ楽です。
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-05-13 22:22
引用:

れいさんの書き込み (2008-05-13 16:08) より:

再検討を強くオススメしますが…。




れいさんと同意見です。

追加で2点
 @UIと言うのは慣れで1週間もすればそれが当たり前になります。
   (逆に使い憎い昔のUIのままにしてくれって言う事もあります)
    →ユーザーを正しい方向に教育した方がよいのでは。。
 AUIとロジックは強く紐づいています。
   UIのレイアウトを自由にするとやがてユーザーのわがままで
     ロジックを変更する羽目に。。。。さらにビジネスロジックまで。。
1

スキルアップ/キャリアアップ(JOB@IT)