過去の桐井戸端BBS (桐ver.9)
27146 メニューフォームから表を最大化表示させて表を閉じるとメニューフォームも最大化されてしまう おさる 2004/07/22-18:15
 また、どなたかお願いします。
ダイアグロ形式のメニューフォームがあります。
サイズは、フォームのサイズで、中央表示に設定してあります。
コマンドボタンの左クリックイベントに、ウィンドウ作成コマンドで、A.tblを最大化表示します。
そこまでは問題ないのですが、その表を閉じると、メニューフォームも最大化されてしまいます。
表を閉じて、メニューフォームのサイズを元に戻す事はできないのでしょうか。
よろしくお願いします。


27147 Re:メニューフォームのサイズ ONnoji 2004/07/22-21:08
記事番号27146へのコメント
おさるさん、こんにちは。

フォームのオブジェクトの属性で、
[フォーム]タブの[最大化ボタン]をオフにしたらいかがでしょうか?

外していたらすいません。


27148 Re:メニューフォームのサイズ 佐田 守弘 2004/07/23-00:16
記事番号27146へのコメント
おさるさん
ダイアグロ形式のメニューフォームと書かれていますが、ウィンドウの形式は何になっていますか?
もしチャイルドであったら、オーバーラップに変更してみて下さい。
(外しているかも知れませんが)

佐田守弘(KS-00119)
27150 Re:メニューフォームのサイズ hidetake 2004/07/23-01:26
記事番号27146へのコメント
>コマンドボタンの左クリックイベントに、ウィンドウ作成コマンドで、A.tbl
>を最大化表示します。そこまでは問題ないのですが、その表を閉じると、メニ
>ューフォームも最大化されてしまいます。
>表を閉じて、メニューフォームのサイズを元に戻す事はできないのでしょう
>か。よろしくお願いします。

表を閉じるときに、ウィンドウを復元させてから表を閉じるように
してはいかがでしょうか?

私はちょっと場面が違うかも知れませんが次のようにしています。
-------------------------------------------------------------
ウィンドウ作成 表,ハンドル=&hWnd,オプション=最大化
表形式編集 更新=許可 \
,許可作業=* \
,ガイド="終了は '/Q'、または閉じる(×)ボタンで終了します!"
ウィンドウ位置 復元,&hWnd
ウィンドウ終了 &hWnd
-------------------------------------------------------------
とは言っても、私は未だにどうにでも自由のきく、起点は .CMD を
ベースに使用していますからね・・・ イベントからだと無理ですね! (^^ゞ



フォームベースからのイベントからの使用となると、テーブルが
閉じられた事をどのようにしてか知って(タイマーでテーブルの
ハンドルが有効なのをこまめにチェックする?)、テーブルが閉じられたら
フォーム自身で自分を「ウィンドウ位置 復元,&hwindow」するか?
あるいは禁じ手の非公開機能を使用するかでしょうか?

あまり推薦しませんが・・・ (^^;

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 オブジェクト操作 ハンドル=&hwindow,@フォーム.アクティブ="1"
 オブジェクト操作 @フォーム.タイマー値1="0.10"
手続き定義終了

手続き定義開始 フォーム::アクティブ(長整数 &アクティブ状態)
 if (&アクティブ状態)
  オブジェクト操作 @フォーム.タイマー1="1"
 end

手続き定義終了

手続き定義開始 フォーム::タイマー1()
 オブジェクト操作 @フォーム.タイマー1="0"
 ウィンドウ位置 復元,&hwindow
 /*オブジェクト操作 ハンドル=&hwindow,@フォーム.アクティブ="0"
手続き定義終了

proc table_open()
 表 "table.tbl"
 ウィンドウ作成 表,オプション=最大化
 /*オブジェクト操作 ハンドル=&hwindow,@フォーム.アクティブ="1"
end

面倒だと思うけど、正規な方法で攻めた方が良いと思います。 (^^ゞ


27151 Re:メニューフォームのサイズ hidetake 2004/07/23-01:35
記事番号27150へのコメント
>面倒だと思うけど、正規な方法で攻めた方が良いと思います。 (^^ゞ

メニューだから、絶対に最大化させて使う事は無いという前提であれば ONnoji さんの書かれているとおり、
> フォームのオブジェクトの属性で、
> [フォーム]タブの[最大化ボタン]をオフにしたらいかがでしょうか?
の方が簡単で良いですね! (^^ゞ

私もメニューなどはコントロールメニュー無しで使用しています。
27152 Re:メニューフォームのサイズ hidetake 2004/07/23-07:07
記事番号27150へのコメント
>手続き定義開始 フォーム::アクティブ(長整数 &アクティブ状態)
> if (&アクティブ状態)
>  オブジェクト操作 @フォーム.タイマー1="1"
> end
>手続き定義終了

ちなみに、何故タイマーを使っているかというと、次のよう直接
サイズを復元しようとすると、最大化のままコントロールメニューが
2重にも3重にも4重にも表示される事があります。

手続き定義開始 フォーム::アクティブ(長整数 &アクティブ状態)
 if (&アクティブ状態)
  ウィンドウ位置 復元,&hwindow
 end
手続き定義終了

従って、タイマーを介しています。アクティブイベントにはそのような
潜在的な問題を抱えているので公開されないのかも?知れません。

それと、オブジェクト名のフォームとイベント名のアクティブは
半角カナで、変数名の &アクティブ状態 のアクティブは全角カナ
だったりします。


27168 解決しました おさる 2004/07/23-20:43
記事番号27146へのコメント
 さっそくのご返答有り難うございます。
ONnojiさんの言う通りに、フォーム属性で最大化をOFFにしたら、うまくいきました。
 hidetakeさん。
アクティブイベントなるものがあるとは知りませんでした。
まだまだ隠しイベントがあるのですかね。
 またよろしくお願いします。有り難うございました。

戻る