EXCELの並べて表示と同じ事をするには?


たぬき  2008-12-03 17:48:42  No: 101393  IP: 192.*.*.*

VB6で表示しているフォームを整列する機能を作っています。

EXCELのメニュー[ウィンドウ]-[整列]
に「並べて表示」があるのですが。
それと同じ様に、フォームを整理したいのですが
どうにもフローが考え付きません

どんなロジックでやってるか分かるかたいますでしょうか?
ヒントだけでも分かる方、いらっしゃいませんか?

編集 削除
魔界の仮面弁士  2008-12-03 17:55:20  No: 101394  IP: 192.*.*.*

Excel を例に出すと言う事は、MDIForm を使っておられるのですよね。
であれば、(MDIForm の)Arrange メソッドを使ってみてください。

Arrange vbCascade
Arrange vbTileVertical
Arrange vbTileHorizontal

編集 削除
たぬき  2008-12-03 19:26:08  No: 101395  IP: 192.*.*.*

すみません、例はEXCELですがMDIではないです。

編集 削除
魔界の仮面弁士  2008-12-03 22:50:28  No: 101396  IP: 192.*.*.*

うーむ。

MDI の場合、並び替えの処理は OS 自体が用意しているんですよ。
(WM_MDICASCADE とか WM_MDITILE とか WM_MDIICONARRANGE とか)
Arrange メソッドは、それをカプセル化しただけで。


デスクトップ全体に対しての並び替え配置でよければ、
  CreateObject("Shell.Application").TileHorizontally
  CreateObject("Shell.Application").TileVertically
なんていう方法もあるのですが、自アプリ限定となると、自前で
各フォームの Move メソッドを呼んでいくしか無いと思いますよ。


ところで、マルチモニタ環境の時は、どのように並べたいのでしょうか?
(Form1 がモニタ1 の上にあって、Form2がモニタ2 の上にあった場合とか)

編集 削除
たぬき  2008-12-04 08:51:26  No: 101397  IP: 192.*.*.*

おはようございます。

返信ありがとうございます。

そうですか、自前ですか。。。
分かりました、やってみます!



あ、マルチモニタは未対応でOKなので考えなくてもいいです。

編集 削除