MS-Access、ETL、モデリングツールのようなGUIの作り方
hi-air
hi-air
ATOMRSS
  • コード求むID: 490
  • 登録日時:  2009/06/13 10:16
  • 最終更新日時: 2009/06/30 04:46
  • アクセス数: 627
  • タグ:  gui
  • codeなにがしブックマークに追加する 0 users
  • このページを del.icio.us に追加
  • このページをはてなブックマークに追加

あまりにも素人な質問で恐縮なのですが、MS-Accessとか市販されているアプリケーションに見られるようなGUIってどうやって作るのでしょうか?

プログラミングの入門書では、フォームにテキストボックス、コンボボックス、グリッドなどをペタペタ貼るイメージしか解りません。

市販のツールのようにキャンバスの中に子ウィンドウを表示してグリグリしたり線を引いたりとかはどうすれば良いのでしょうか?

とっかかりだけでも教えて頂けると助かります。

因みに、今から覚えたい言語としてはRIA系を考えています。
ですので我侭を言って申し訳ないのですが、出来ればJavaFX、AIR、WPFあたりで回答を頂けると嬉しいです。

申し訳ありませんが宜しくお願いします。

以下、知りたいGUIのイメージです。

<MS-Access>
http://www.novixys.com/Exult/Relationships_1021_01-sm.jpg
http://justinsomnia.org/images/microsoft-access-qbe.png

<ETL>
http://www.sas.com/offices/asiapacific/japan/images/softw...
http://www.mitsubishielectric.co.jp/business/itsolution/c...
http://www.ctc-g.co.jp/~product/ctc-web/images/option/ima...
http://www.appsinsight.net/wp-content/uploads/2009/03/odi...

<その他>
http://www.techworld.jp/images/c/25125_tms.jpg
http://movion.net/wp-content/uploads/2008/04/clay01.jpg

コメント

沈んできたので自己コメントです。
済みません。どなたかヒントだけでも…。
宜しくお願いします。

GJGJGJ

  • ゲスト
  • 2:ゲスト
  • 2009/06/18 11:42

プログラミングの入門書では、フォームにテキストボックス、コンボボックス、グリッドなどをペタペタ貼るイメージしか解りません。 
と書いていらっしゃるので、おそらく Windows GUI のプログラミングについてのことをおっしゃっているものと推測します。

どのようなツールを作りたいかにもよりますが、 Windows の GUI プログラムを作成する場合、
基本的には「フォームに部品を配置し、その部品の動作をプログラムしていく」という基本操作を繰り返してツールを作成していきます。
入門書では、その基本操作が書かれています。

たとえば MS Visual Studio のように Windows GUI が作成できる環境では、画面を作成するための様々な部品が用意されています。
どんな部品があるか?を良く知り、それを組み合わせることでおおよそのツールはできると思います。

ただ、市販のツール並みに複雑で高速なものを作ろうとすると、 C++ 辺りが最適だと思いますが、あまり詳しくないので控えます。

参考になれば幸いです。

GJGJGJ

どんな部品があるか?を良く知り、それを組み合わせることでおおよそのツールはできると思います。

そうでしょうか? IDEのコントロールや市販のコントロールを見ても、入力はテキストか選択、出力はテキスト・画像・グラフ程度のことしか出来そうに思えないんです。
というか、どうしたら良いか解りません。

ただ、市販のツール並みに複雑で高速なものを作ろうとすると、 C++ 辺りが最適だと思います

C#やJAVAでも良いので、大まかな手順が解る資料がどこかに無いものでしょうか?

例に挙げた市販のツールはどれも複雑で高機能ですが、別にそこまで複雑なものを作ろうとしている訳ではありません。

標準コントロールでは作れそうに無いGUIを作るにはどうしたら良いかを知りたいんです。
作りたいものが漠然としているようなので、要件を絞ってみます。
取り敢えず、以下のようなことをやりたいです。
・アイコンをドラッグしてキャンバスに追加
・キャンバスの中でアイコンからアイコンへマウス操作で線を描画
・キャンバスの中でアイコンをドラッグ可能(線も追随する)
・キャンバスの中でアイコンや線を右クリックすることでメニュー表示

如何でしょうか?

GJGJGJ

  • ゲスト
  • 4:ゲスト (TIGER)
  • 2009/06/19 11:29

自分、Delphiしか使えないのでDelphiでの開発経験になりますけど、
基本的には「全部描画する」しかないと思います。

たとえばアイコンをドラッグするというならば
・キャンバス内でマウスが左ボタンダウンしたら、ダウンしたマウス座標を
 スクロール等考慮した絶対位置に換算
・そこにドラッグ可能なオブジェクトが配置されていると、内部の
 リストにあれば、該当オブジェクトのドラッグ状態をたてる
 またオブジェクトとマウスの相対位置を保存する
・キャンバス内でマウスが移動したときに左ボタンがダウンしたまま
 だったら、ドラッグシンボルを該当位置に表示する
・キャンバス内でマウスの左ボタンが離された時、なんらかの
 オブジェクトにドラック中のマークがされていたら、マウス位置
 からドラッグされているオブジェクトの相対位置を設定する
・なんらかの変動があった祭には、キャンバスの再描画を行う
 その時、内部に保存してある各オブジェクトの属性およびZインデックス
 に従い、表示可能範囲をクロップして、基本描画命令
 (直線・円弧・矩形・ブロックコピー等)で描画する

・・・といった一連の作業をすべてコーディングすることで可能です。
そういうのを省略するためにフォームとかツールキットがあるんですけど
こだわったGUIのアプリを作ろうと思ったら普通に必要なことですよ。

#その気になればVISIO的なことだってできます(w

何か便利なツールがあればいいですが、大抵どこか自分のやりたい
ことには合わないもんなので、結局書くことになってしまうと
思います。もっとも、RIA系ということになると、もうちょっと楽だとは
思いますけど。

GJGJGJGJ

TIGERさん、コメントありがとうございます。

確かに座標を指定してフォームの中に丸や三角の図形を描画するサンプルを昔Windowsプログラミングの解説書か何かで見たことがあります。(言語はC++でMFCを使っていたと思います。)

確かに、既存の市販アプリは「その延長線上で全て描画されているんだろうな」という印象は持っていましたが、今でもそうなのでしょうか?

仕事としてチームで開発するならまだしも、個人的に趣味でちょっとしたツールを作るのには敷居が高すぎます。もっと簡易的にできる方法は無いものでしょうか?

次のことぐらいはノンコーディングで実現して欲しいです。
・オブジェクトの位置をマウスで変更
・クリックをするとハンドルを表示して選択状態であることを視覚的にフィードバック
・ドラッグをすると薄い影を表示してドラッグ中であることを視覚的にフィードバック

いろいろGoogleで調べているのですが、EclipseのGEF(Graphical Editing Framework)が私のイメージに一番近かったです。

ただ、これはEclipseのプラグインを開発する時に使用するものの様なので、Web上で実現しようと思っている私の状況には合いません。

実は最初はDHTMLを考えました。ブラウザの中でオブジェクトをマウスでドラッグして位置を変えるのは簡単に出来ました。でも、この方向で進めると結局はAjaxになってしまいそうなので諦めました。(私にはAjaxは複雑で煩雑過ぎます。)

Ajaxに変わるRIA系の言語が流行っているとのことなので、そっち系で何かうまい手法が無いかと思い質問させて頂いている次第です。

GEFを見つけたので「Graphical Framework」で検索したところ「.Net Framework」に「GDI+」というのがあることを知りました。

なので、WPFでGEFと同じような開発が出来ないか探してみようと思っています。
明日、街の大きな本屋に行って調べて見ます。

どなたか情報をお持ちであればお願いします。

GJGJ

  • ゲスト
  • 6:ゲスト (TIGER)
  • 2009/06/21 15:38

> 次のことぐらいはノンコーディングで実現して欲しいです。 

そこで述べてること「だけ」ならば、普通にドラッグドロップ操作です。
大概の開発環境で、最小コーディングで行けると思いますよ。
GDI+に対応してれば半透明描画も簡単でしょう。

でも、描画だけできても仕方ないですよね?

GJ

TIGERさん、再びコメントありがとうございます。 

でも、描画だけできても仕方ないですよね?

仰る通りです。「描画だけ」ではアプリケーションにならないですものね。
でも、その「描画だけ」の部分でも手順を解説した資料やサンプルに辿り着けなくて苦労しています。

また、「・・・といった一連の作業をすべてコーディングすることで」と仰られていたので、「描画だけ」の部分に大量のコーディングが必要なように感じてしまったのでああいうコメントになってしまいまいした。

そこで述べてること「だけ」ならば、普通にドラッグドロップ操作です。
大概の開発環境で、最小コーディングで行けると思いますよ。

そうなんですか。その辺を学習したいのですが、何か良い資料はありませんでしょうか?

私が引き合いに出したEclipseのGEFであれば、Webでも書籍でも情報がありそうです。
http://codezine.jp/article/detail/40
http://www13.plala.or.jp/observe/index.html#gef
http://book.mycom.co.jp/book/978-4-8399-2972-5/978-4-8399...

ですが、他の処理系で同様の機能(フレームワーク?)を見つけることが出来ません。

PS:因みに、今日は雨が降っていたので本屋には行けていません。

GJGJ

  • ゲスト
  • 8:ゲスト (TIGER)
  • 2009/06/22 16:57

たとえば、VBでの例になりますが、こんなサイトが参考になりました。
http://homepage1.nifty.com/rucio/main/technique/tec16_Dra...

リストの要素とかグリッドのセルとか、ファイルの読み込みとかでは今でもよく使われる
ドラッグ&ドロップですが、最近のGUIの流行にはあまり合ってないようで、このごろ
よほど特殊な用途のアプリでないと、見なくなってきたなぁという感はあります。
Windows3.1~95くらいの時代だと、これができること=GUIだ!みたいなノリでしたが。


GJGJ

TIGERさん、再びコメントありがとうございます。また、返信が遅れて申し訳ありません。
ちょっと、仕事の方が立込んできて…。今から仮眠して翌朝9時に出社です。(T^T)

教えて頂いたコードを動かしてからコメントしようと思っていたのですが、VBのセットアップも終わってません。orz
Visual Basic 2008 Express Editionを入れようと思うのですが、教えて頂いたソースはVB6なのでそのままでは動かないかも知れませんね。

「Visual Basic 中学校」全体に目を通しつつ頑張って見ます。

あと、本屋に行って「Silverlight入門」という本を買ってみたので、こちらも参考にしてみます。

本音を言うと、もう少し揃っているフレームワークがあることを期待していたのですが、勉強の意味で地道に自分でコーディングしてみます。

ありがとうございました。






GJ

前へ 1 次へ

プレゼン公開・共有サイト handsOut.jp チーム・マイナス6% - みんなで止めよう温暖化

ブックマークコメント