過去の桐井戸端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さん。 アクティブイベントなるものがあるとは知りませんでした。 まだまだ隠しイベントがあるのですかね。 またよろしくお願いします。有り難うございました。 |