過去の桐井戸端BBS (桐ver.8)
19410 絞り込み後メニューフォームをアクティブに戻すには? shoko 2003/03/15-16:25
テキスト、ボタンを配置した、表とは関連付けのないメニューフォーム、
「メイン」で表を開きウィンドウ作成させています。
メニューフォームを操作しながら表を参照させようと考えています。

テキストで条件指定させ、コマンドボタンを押すと絞り込むようにさせたのですが、
せっかくここまでキーボード操作だけでできるようにしたのに、
絞り込んだ表がアクティブになってしまい、
フォーカスは目的の「もういいよ」ボタンにあるにもかかわらず、
マウスに持ち替えてクリックする以外メニューフォームをアクティブに戻す方法がわかりません。

桐V8 SP6です。よろしくお願いします。


19424 Re:絞り込み後メニューフォームをアクティブに戻すには? 今村 誠 2003/03/16-09:33
記事番号19410へのコメント
shokoさんこんにちは

表がいくつか開いているときに、その表を切り替えるキーは
Windowsの標準のキー操作の場合Ctrl+Tabでできます。
またアプリケーションを切り変えるときはAlt+Tabで
桐の画面で ヘルプ→トピックの検索→目次→仕様→キー割り当て一覧
その中のWindowsのキー割り当てのところに書いてあります。
ただ表からフォームには変わりますが、フォームから表には
変わらない、ちょっと中途半端なような気がします。

19426 Re:絞り込み後メニューフォームをアクティブに戻すには? うにん 2003/03/16-11:43
記事番号19410へのコメント
>桐V8 SP6です。よろしくお願いします。

桐9に「アクティブ設定」というメソッドが追加されていますので、
8ではできないということじゃないですか?

他のウィンドウを全部閉じてしまえば残ったフォームがアクティブになると思いますが。

19427 Re:アクティブ化もどき 通りすがり 2003/03/16-12:51
記事番号19410へのコメント
>桐9に「アクティブ設定」というメソッドが追加されていますので

桐V8にないのであれば、擬似的に・・・・。

>テキストで条件指定させ、コマンドボタンを押すと絞り込むようにさせた

このコマンドボタンで開きたい表ファイル名を「hogegoge.tbl」とします。

機能名    機能パラメーターリスト
開く     "hogehoge.tbl"
手続き実行  ActiveWindow

手続き定義開始 ActiveWindow()
 ウィンドウ位置 最小化 , &hwindow
 ウィンドウ位置 復元  , &hwindow
手続き定義終了

もとのメインフォームが表示に重ければ画面が「ちかっ」とするわずらわしさがありますが、
軽ければ殆ど違和感がないかも?(一瞬ですから)

いちおうこれで可能でした。
コマンドボタンの機能が全て終了するまでは、アクティブなウインドウは切り替えられないようですので、
これが使えるかも?

まあ、もっと賢明な諸氏なら、回りくどい方法を使わずとも「最初から表をフォームにとりこめ」と助言するでしょうが・・・・。
いわゆる一つの「悪あがき」として・・・・。

19432 Re:絞り込み後メニューフォームをアクティブに戻すには? 佐田 守弘 2003/03/16-13:50
記事番号19410へのコメント
shokoさん
メニューから表を開くのではなく、その表を表示するフォームを作って、
これを開いて下さい。そしてそれを閉じる「もうい>いよ」ボタンは、
表示するフォームの方に設ければ、解決するはずです。

●解説
メニューフォームから表を開いて、この表を前面に表示するという事は、
この表がアクティブになっていて、メニューフォームの方はアクティブではありません。
アクティブではないウィンドウのボタンは操作のしようがありませんから、
この方法ではどうやっても目的は達しないはずです。

メニューフォームをアクティブにしたまま表を開く事は不可能ではありません。
簡単に試してみるなら、メニューフォームをオーバーラップ形式のダイアログにしてみて下さい。
開いた表の前にメニューが表示されたままになります。
もちろん開いた表は参照できません。

つまり、ご質問のメニューから表を開き、これを見ながらメニューの方で
開いた表を閉じたいと言うのは、Windowsの機能として不可能な相談です。

佐田守弘(KS-00119)
19434 Re:絞り込み後メニューフォームをアクティブに戻すには? 通りすがり 2003/03/16-15:24
記事番号19432へのコメント
>つまり、ご質問のメニューから表を開き、これを見ながらメニューの
>方で開いた表を閉じたいと言うのは、Windowsの機能として不可能な
>相談です。

フォーム側で表を開いた時、その表の表番号とウィンドハンドルが分かれば、
さらに表が「訂正モード」でない場合には、

ウィンドウ終了 &WindowsNo
終了 表 編集対象表

コマンドで可能かと思います。
開いた表ファイルのウインドハンドルや表番号を取得するには
(最新で開いた表についてということで)下記を参考にされてみてはどうでしょうか?

12275 直前に操作した表の表番号を取り出す方法は?
http://www.fuku3.com/~habata/kbbs/kakov8/12275.htm

ということで、一応、可能です。


19436 Re:サンプルです 通りすがり 2003/03/16-19:07
記事番号19434へのコメント
サンプルを
http://www.fuku3.com/~habata/cgi-bin/bbs1/clip.cgi
にあげておきました。

==== イベント記述内容 ====

名札 メイン
 変数宣言 局所 ,  数値,{&TblNo,&WindNo}
 変数宣言 局所 , 文字列,{&TblFileName}


手続き定義開始 t_TblFileName::ソース値更新() /*ファイル名取得後自動で表示 */
 メソッド呼び出し @フォーム.更新モード設定(0)
 表 &TblFileName
 編集表 &TblFileName
 ウィンドウ作成 表
 &TblNo = #表番号取得(&TblFileName)
 &WindNo = #ウィンドウハンドル取得(&TblNo)
 手続き実行 ActiveWindow()
 メソッド呼び出し @cmdTblClose.フォーカス設定()
手続き定義終了

手続き定義開始 ActiveWindow() /* 擬似アクティブ化 */
 ウィンドウ位置 最小化 , &hwindow
 ウィンドウ位置 復元  , &hwindow
手続き定義終了

手続き定義開始 TblFileClose() /*コマンドボタンに仕掛けてある */
 ウィンドウ終了 &WindNo
 終了 表 , &TblNo
 メソッド呼び出し @t_TblFileName.フォーカス設定()
手続き定義終了


ちなみに、エラー処理など(表ファイルが存在しないとか、表が開いていないのにコマンドボタンを押したとか)は
一切考慮していません。実際似にはその配慮も必要でしょう。


19440 Re:絞り込み後メニューフォームをアクティブに戻すには? 佐田 守弘 2003/03/17-02:00
記事番号19434へのコメント
通りすがりさん
原質問にメニューフォームと表のサイズの関係が記載されていないので、
私は表を開く事によって、非アクティブになったメニューフォームが裏に
隠れる事を前提にしているのですが、そう言った場合にはどうでしょうか。

確かに、フォームがアクティブでないとしても、表を閉じるボタンが
少なくとも画面に表示されていれば、書かれている方法で可能かと思います。
しかし、おそらくは開いた表でメニューが隠れてしまうでしょうから、
見えていないメニューフォームにあるボタンを操作する事自体が、
不可能になるのではと思っていたのですが。

佐田守弘(KS-00119)
19443 Re:絞り込み後メニューフォームをアクティブに戻すには? 通りすがり 2003/03/17-08:45
記事番号19440へのコメント
>原質問にメニューフォームと表のサイズの関係が記載されていないので、
>私は表を開く事によって、非アクティブになったメニューフォームが裏に
>隠れる事を前提にしているのですが、そう言った場合にはどうでしょうか。

ですので、裏に隠れることなく、アクティブになればいいのでは?
サンプルでは、最初のメニューフォームがアクティブになり、表の表(手前)に配置されます。
表を開いてももとのメニューがアクティブになればいいのでしょ?

裏に隠れる(非アクティブ)ことは前提にしていません。

それでもどうしても特定のフォームを手前に出したければ、WHS等の外部モジュールにより、
sendkeyしてアクティブにするほう方もあります。
「Windowsの仕様でできない」と結論付けるのはどうかと・・・・。

19444 Re:絞り込み後メニューフォームをアクティブに戻すには? 通りすがり 2003/03/17-08:46
記事番号19440へのコメント
さらに、飛び道具として、タイマイベントを使うという方法もあるかな?

19448 Re:絞り込み後メニューフォームをアクティブに戻すには? shoko 2003/03/17-10:59
記事番号19444へのコメント
今村さん、うにんさん、佐田さん、通りすがりさん、ありがとうございます。

フォームはポップアップにしており、表の裏に回るということはありません。
通りすがりさんの「擬似アクティブ化」がいいようです。非常に快適になりました。
ありがとうございました。


戻る