過去の桐井戸端BBS (桐ver.8)
8102 フォームを最大化に固定するには 初心者君 2000/10/17-00:16
桐をいじって3年目です。
一括処理で全体のフォームとか表ををまとめてるのですけど。

一つのメインのフォームの「フォームA」があって
検索フォームの「フォームB」があります。

そのフォームAに「ファイル→開く→フォームB」と設定をしたコマンドボタンを作り、
ボタンを押すと「フォームB」は出てくるのですけど、最大化に設定してある「フォームA」が急に小さくなってしまいます。
「フォームA」を最大化のままにしておくことは不可能なのでしょうか

※ちなみに一括処理でまとめてない時は最大化のまま「フォームA」は残ります。

皆さんお助けください。

8153 Re:フォームを最大化に固定するには(同じ悩み) KH 2000/10/19-22:31
記事番号8102へのコメント
>最大化に設定してある「フォームA」が急に小さくなってしまいます。
>「フォームA」を最大化のままにしておくことは不可能なのでしょうか
>
>※ちなみに一括処理でまとめてない時は最大化のまま「フォームA」は残ります。

はじめに、回答ではありません。
リプライを待っていましたが、なかなかないですね。
実は私も同じ現象で困っています。今は諦めてそのまま使っていますが。
多分同じ減少だと思いますが、一括処理で初期メニューから、
コマンドボタンで複数のプログラムに移って処理をして初期メニューに戻ってきますが、
移った先で画面全体を使わないフォームを表示すると前の初期メニューフォームは小さくなってしまい、
処理を終えるとまた初期メニューに戻ってきますので最大化しますが、非常にみっともないかな状態の部分が所々あります。

密かに、しめたと思い回答を心待ちにしておりましたが、リプライがないので、待ちきれず同じ悩みをコメントします。
ウィンドウ作成・会話コマンドでなく、モーダルフォームにすべきなのでしょうかね。
その方が挙動が分かりやすいと悲しげさんがいってましたから。
でもあの挙動はどうも私には違和感があり、見通せないんですよね。
なら、今の方が、小さくなっても見通せるんですよね。つまらないコメントゴメンナサイ。では失礼
8155 Re:フォームを最大化に固定するには Ogo 2000/10/19-23:38
記事番号8153へのコメント
>>最大化に設定してある「フォームA」が急に小さくなってしまいます。
>>「フォームA」を最大化のままにしておくことは不可能なのでしょうか

(基本的に)不可能です。
理由は、桐 Win のウィンドウ制御は基本的に MS-Windows 自体の API に従った MDI (マルチドキュメントインターフェース)の形を
取っているからです。

MDI でないものを SDI (シングルドキュメントインターフェース)と言います。
例としては、一太郎・ワード・エクセル等が MDI (1つのソフトの中でたくさんのファイルを開く)の代表で、
メモ帳や MS-Paint 等が SDI の代表です(1つのアプリが1つのファイルしか開けない。
複数のファイルを扱いたい場合には、同じアプリを2つ以上立ち上げる)。

MDI の場合、大枠のアプリ自体のウィンドウの中に、開いたファイルの数だけ子ウィンドウが開く形になります
(右上隅の最小化・最大化・終了のボタンが上下に2列並んだ形)。
この場合、子ウィンドウが「最大化するか否か」は全ての子ウィンドウが全く同じ条件で引き継いでしまうのです。

つまり、MDI の子ウィンドウを最大化しようとすれば、同時に開いている子ウィンドウは全部最大化せざるを得ないし、
逆に、最大化しない(できない)子ウィンドウを作成すれば、当然全ての子ウィンドウは最大化解除される
――これが MS-Windows 標準のルールなのです。

従って、冒頭に戻って、「複数の子ウィンドウを、特定のものは最大化・残りは最大化しない状態にしたい」というのは
一般的には無理な相談です。

さて、そこでどうするかですが、幾つかの代案としては、

1.「最大化したまま残す」をきっぱり諦める――ただし、変なサイズで
  元のウィンドウが残るのが見苦しいのは困るので、
   「ウィンドウ位置 最小化,&元ウィンドウハンドル」または
   「ウィンドウ位置 非表示,&元ウィンドウハンドル」を使って、
  元のウィンドウを視界から消してしまうよう一括処理を組む(非表示にすると、
  一括処理が破綻した時に、見えないフォームが開いたままになるので、
  デバッグが必要な間は非表示にしない方がお薦め)。

2.PhotoShop 等を見習って、本体(元のウィンドウ)は MDI の子ウィンドウとして最大化したまま、
  最大化せずに開きたい小さいウィンドウを「ポップアップ」で MDI の大枠の外に独立して描画する
  (当然、これではモーダルにならないが)。

どうでしょう? ご自身の条件(例えばイベント処理では問題があったり)もよく吟味した上で、
事前実験の上、採用をご検討下さい。

8156 Re:フォームを最大化に固定するには KH 2000/10/20-00:04
記事番号8155へのコメント
 Ogoさん、有難うございます。度重なる適切なる解答有難うございます。
モーダルフォームとあわせてもやもやが快晴状態になりました。
今回は人のふんどしを借りてとてもいい思いをしましたが。
dos版からWin版にコンバートする時から、ウィンドウ回りがホント自分のものになっていないというかそんな胸のつかえが、
この2日でほんとすっきりしました。
8171 Re:フォームを最大化に固定するには 初心者君 2000/10/21-00:19
記事番号8102へのコメント
OgOさんありがとうございました。
はっきり出来ないとわかったので別の方法で
考えて頑張ってみたいと思います。
これからもよろしくお願いします。

戻る