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


たぬき  2008-12-04 02:48:42  No: 101393

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

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

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


魔界の仮面弁士  2008-12-04 02:55:20  No: 101394

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

Arrange vbCascade
Arrange vbTileVertical
Arrange vbTileHorizontal


たぬき  2008-12-04 04:26:08  No: 101395

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


魔界の仮面弁士  2008-12-04 07:50:28  No: 101396

うーむ。

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 17:51:26  No: 101397

おはようございます。

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加