過去の桐井戸端BBS (桐ver.9)
20153 オブジェクト操作で画面表示をするしないの制御がうまくいかない。 小畑 泰偉 2003/04/27-01:21
 皆さん 今晩は 今回もよろしくお願いします

フォーム画面に条件によって ”印刷”と言うコマンドを表示させたいのです

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
  if (条件1)
   オブジェクト操作 @印刷.画面表示="1"
  end
手続き定義終了

手続き定義開始 ボタン1::マウス左クリック( 省略 )
   オブジェクト操作 @印刷.画面表示="0"
手続き定義終了

簡単ですが上記のようにしております
ところが フォーム開始で 画面表示="1" をするとその後の操作が出来ません
表示されたままです
オブジェクト属性(印刷)→表示→画面表示する のチェックははずしております

何か根本的なところでの考え違いがあるのでしょうか?
あるいは フォーム開始ではこのような使い方は出来ないのでしょうか?

よろしくご指導ください
20155 Re:オブジェクト操作 画面表示についての質問です 佐田 守弘 2003/04/27-09:40
記事番号20153へのコメント
小畑 泰偉さん
●始めに確認します
 >ところが フォーム開始で 画面表示="1" をするとその後の操作が出来ません
 >表示されたままです
の「その後の操作」とは、どの様な意味でしょうか。
印刷ボタンが使用不能になるとか、画面がフリーズするとか、
具体的に書いて頂いた方が分りやすいと思います。

以下は上記とは関係なくその他で気がついた点でのコメントです

●フォーム開始時に[印刷]ボタンは表示させるのでしょうか
書かれている質問を見ると、「条件1」が成り立った時に表示させたい様ですね。
そしてフォーム定義画面でも、非表示にしていると言う事は、
フォーム開始時には非表示にしておきたい事と理解しますが。
所が、フォーム開始イベントで表示に切り替えていますから、この点で矛盾しています。

●表示させるタイミング
上記で、多分フォーム開始で表示させるのではないと推定します。
おそらく表示後の何等かのタイミングで、「条件1」が成り立った時に表示させたいのでしょう。
従って、フォーム開始イベントに記述するのは不適切です。

ではどこに記述したらよいのかですが、これは質問文に書かれている内容からだけでは
私には推定でいません。
そこで、この「条件1」が発生したり、解消するタイミングがどこで起きるかを
少し整理してみると、良いと思います。

何もせずに条件1が成立する事はあり得ないので、次のどちらかだと思います。

1)自分の操作で発生する場合
仮に、項目値にある値を入れた結果で発生するなら、ソース値更新イベントの中で
表示に切り替えを行って下さい。
ある計算結果によって発生するなら、その結果が得られた後で条件コマンドを使って、
切り替えを行って下さい。

2)他のユーザーによって発生する場合
この場合にはタイマーイベントなどを使って、定期的にチェックするしかないと思います。

佐田守弘(KS-00119)
20159 追加説明 小畑 泰偉 2003/04/27-13:01
記事番号20155へのコメント
 佐田先生 せっかくの日曜日なのに,貴重なお時間を割いていただき恐縮です

もう少し説明させていただきます

A.wfm で入力された条件によって
今回質問の B.wfm が起動します 従って A の条件次第で "印刷"コマンドボタンの
表示・非表示を制御出来なければなりません
その為に

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
  if (条件1)
   オブジェクト操作 @印刷.画面表示="1"
  end
手続き定義終了

ここまではうまく作動します
この状態は A.wfm で入力された (条件1)によって表示されています
この B.wfm にもいくつかボタンを貼り付けています
そのボタンで絞り込み等の操作をしますが
このとき

手続き定義開始 ボタン1::マウス左クリック( 省略 )
   オブジェクト操作 @印刷.画面表示="0"
手続き定義終了

を実行しても "印刷"ボタンが 表示されたままなのです

ちなみに フォーム開始 の部分を消してみると
初期状態でこそ不便ですが,その後の操作は思いどうりになります

よろしくお願いします

20160 Re:追加説明 しぼうかん 2003/04/27-13:17
記事番号20159へのコメント
小畑 泰偉さん、こんにちは。

全体の事はよく理解してはいないのですが、

>手続き定義開始 ボタン1::マウス左クリック( 省略 )
>   オブジェクト操作 @印刷.画面表示="0"
>手続き定義終了
>
>を実行しても "印刷"ボタンが 表示されたままなのです

"印刷"ボタンのオブジェクト名が"印刷"なら

手続き定義開始 印刷::マウス左クリック(省略)

になり、"印刷"ボタンのオブジェクト名が"ボタン1"なら

オブジェクト操作 @ボタン1.画面表示="0"

になるのではないでしょうか?
20161 Re:オブジェクト操作 画面表示についての質問です 小畑 泰偉 2003/04/27-14:05
記事番号20153へのコメント
佐田先生 しかんぼう先生 ありがとうございました

詳しくは判りませんが なんとなく解決しました

@印刷オブジェクトにフォーカスが張り付いたままでした
そこで他のオブジェクトにフォーカスを移動させたところ
思い通りの動作になりました

ありがとうございました

20165 Re:オブジェクト操作 画面表示についての質問です 悲しげ 2003/04/27-23:31
記事番号20161へのコメント
なんとなく解決済(理由をうすうすお気づき)のようですが、こういうことだと思います。

現在フォーカスしているオブジェクトについては、
オブジェクト操作コマンドを以ってしても、画面表示をオフにすることは
そもそもできない、画面表示をオフにしたいなら、他オブジェクトにフォーカスを
移動させておく必要があると云うことです。
20166 ハズしました。 しぼうかん 2003/04/28-00:15
記事番号20160へのコメント
この オブジェクト操作 @??.画面表示="0"というコマンドは使った事がなかったのですが、どうもハズしたみたいです。
逆に私のほうが勉強させてもらいました。

NO.20160は見なかった事にして下さい。

NO.20165の悲しげさんのお答えが正しい解説だと思います。
20175 おかげさまで一つ賢くなりました 小畑 泰偉 2003/04/28-19:24
記事番号20165へのコメント
皆さん ありがとうございました

これからもよろしくお願いします

戻る