過去の桐井戸端BBS (桐ver.8)
2301 イベント処理でのメニューについて su 1999/7/29-16:30
いつもお世話になっています。
現在、メニューフォームを作ろうと桐8と格闘しています。
ところが初っぱなからつまずき気味です。
と言いますのは、フォームに「結合表表示」と言うボタンを作り、これを左クリックすると、
結合表を最大化で開くというものです。
ここまではよいのですが、この後表を閉じると、メニューフォームまでも最大化されてしまいます。
これをフォームの定義値としたいのですがどのようにすればよいのでしょうか。
ちなみに、フォームを最小化し、その後表を立ち上げ、表を終了するとフォームを
復元すればよいのではないかと考えますが、具体的な記述かさっぱりわかりません。
どうかみなさんよろしくお願いいたします。

手続き定義開始 結合表表示::マウス左クリック(長整数 &マウス位置[2],長整数 &明
細番号,長整数 &フラグ,参照 長整数 &処理中止)
変数宣言 整数{&表,&終了}

結合 "会費台帳.viw",,終了状態=&終了
ウィンドウ作成 表,ハンドル=&表,オプション=最大化
手続き定義終了
2324 Re: アックン 1999/8/3-13:05
記事番号2301へのコメント
suさん、こんにちは。

>ちなみに、フォームを最小化し、その後表を立ち上げ、表を終了するとフォームを
>復元すればよいのではないかと考えますが、具体的な記述かさっぱりわかりませ

私つい先日、いかすぱげてぃ氏に同様なイベントの手法を教えてもらったばかりです。
いかすぱさんが作った汎用メニュー「簡易乱茶」が、【多遊】さんのホームページに
収録されていますから、是非ダウンロードしてください。
http://www2u.biglobe.ne.jp/~s_tanaka/index.htm


名札 メイン
 var 整数 {&hwin[10],&menu}

proc フォーム::フォーム開始(長整数 &表番号)
  &menu = &hwindow
end

proc フォーム::タイマー1()
 if (.not #ウインドウハンドル(&hwin[1]))
   ウィンドウ位置 復元 ,&menu
   object @フォーム.タイマー1 = "0"
 end
end
******
proc 結合表表示::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,
参照 長整数 &処理中止)
 /* 以下、変数の種別に注意してください。 */
 結合 "会費台帳.viw"
ウィンドウ作成 表 ,ハンドル = &hwin[1] ,オプション = 最大化
 条件 (#ウインドウハンドル(&hwin[1]))  ウィンドウ位置 最小化,&menu
 object ハンドル = &menu ,@フォーム.タイマー1 = "1"
end
******

上の例では、メニューフォームを最小化する処理がコマンドボタン1個毎に必要
になります。
実際には複数のコマンドボタンをファリーにまとめてやって、イベントの記述が
1箇所ですむようにします。
ファミリーについては、ヘルプ(index.html)の解説を読んでください。
2342 Re: su 1999/8/4-16:32
記事番号2324へのコメント
アックンさん。具体的なご回答ありがとうございます。
とりあえずフォームを再定義し、最大化のチェックをはずすことで対処していましたが、
ご指示のイベントで早速試してみたいと思います。
イベントは簡単なようでいて難しく、まだまだつぼがわからず悩める毎日です。
一刻も早く解説本が出ることを期待しているのですが、具体的な情報はまだ出てきていない
ようですね。
それと、いかすぱさんが作った汎用メニュー「簡易乱茶」をダウンロードしました。
なんとすごいとただただ感心するばかりですが、高度すぎてちょっと内容までは付いていけません。
早くこのようなイベントを理解できるようになりたいものです。
今後ともよろしくお願いいたします。
2343 Re: アックン 1999/8/4-16:43
記事番号2342へのコメント
suさん>
メニューフォームのフォーム(オブジェクト)のイベント(タブ)にタイマー値1を0.5に設定してください。
2356 Re: su 1999/8/6-00:13
記事番号2343へのコメント
アックンさんお世話になります。
おおせの通りに組んでみたのですが、フォームが最小化されて表は立ち上がるのですが、
と同時にメニューフォームが復元されてしまいます。
何か設定のしかたがおかしいのでしょうか。

名札 メイン
var 整数 {&hwin[10],&menu}


手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
&menu = &hwindow
end

手続き定義開始 フォーム::タイマー1()
if (.not #ウインドウハンドル(&hwin[1]))
   ウィンドウ位置 復元 ,&menu
   object @フォーム.タイマー1 ="0"
 end
end

手続き定義開始 コマンドボタン_1::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参
照 長整数 &処理中止)
表 "会員台帳"
ウィンドウ作成 表 ,ハンドル = &hwin[1] ,オプション = 最大化
 条件 (#ウインドウハンドル(&hwin[1]))  
 ウィンドウ位置 最小化,&menu 
 object ハンドル = &menu  @フォーム.タイマー1 = "0.5"
end
2360 Re: アックン 1999/8/6-13:14
記事番号2356へのコメント
suさん>

>  object ハンドル = &menu  @フォーム.タイマー1 = "0.5"

れれ。"0.5"は"1"のままでいいんですよ。(^^;
ここはタイマーの時間ではなくて、on/offを設定します。
1がON、0がOFFです。

で、私が追加説明で書いた0.5というのは、フォームのオブジェクトの属性画面
で設定してください。
メニューフォームの@フォームのオブジェクトの属性→イベント(タブ)→
ここにタイマー値1というのがありますから、この値を0.5にしてください。
実は私もいかすぱさんに教えてもらった当初、これにひっかかってかなり悩み
まして、マニュアル読み返してオーマイガー(!)でありました。<(^^;
2361 Re: su 1999/8/6-23:47
記事番号2360へのコメント
>メニューフォームの@フォームのオブジェクトの属性→イベント(タブ)→
>ここにタイマー値1というのがありますから、この値を0.5にしてください。
あっくんさん、こんなところの設定もあったんですね。
これで今度は大丈夫と勇んで行いましたが、まだ、復元されてしまいます。
そこでなんだかんだといじり回し、結局、フォームの属性のチェックを全部はずしてみました。
特に最大化のチェックが良くないようですね。
これで何とか、フォームは最小化され、表を閉じると復元されました。
いろいろとありがとうございました。
ところが、ここでちょっと問題があります。
フォームのボタンを押すと表は一瞬最大化で開かれますが、その後すぐ最大ではなくなってし
まいます。(表は開かれてはいます。ただし最大ではないのです。)
ですからその後表の最大化ボタンを押さなければなりません。
これはいったいどうすればよろしいのでしょうか。
もし、ご面倒でなければ教えていただけるとありがたいのですが。

戻る