過去の桐井戸端BBS (桐ver.8)
9252 イベントがうまく機能しない ながい 2001/01/09-22:40
あるフォームの あるオブジェクトに次のようにイベントを設定しましたが、うまく動作しません。

   手続き定義開始 製品区分::ソース値更新()
    ケース開始
     ケース ([製品区分]="自社製品")
      メソッド呼び出し @形名部番.フォーカス設定()
     ケース ([製品区分]="他社製品")
      メソッド呼び出し @入力品名.フォーカス設定()
    ケース終了
   手続き定義終了

動作状況: 製品区分に何を入力しても、[形名部番]および[入力品名]の両方にフォーカスする。

オブジェクトの属性等の設定で、抜けているところがあるかも知れませんが、どなたかご教示ください。

9254 質問内容確認>イベントがうまく機能しない 佐田 守弘 2001/01/09-23:56
記事番号9252へのコメント
ながいさん
質問内容を確認します。

>動作状況: 製品区分に何を入力しても、[形名部番]および[入力品名]の両方に
>     フォーカスする。

との事ですが、両方にフォーカスすると書かれている意味を確認させて下さい。

●フォーカスするとは
桐に限らず、フォーカスするとは目的オブジェクトにフォーカスを移動させる事を言います。
フォーカスするのは1ヵ所ですから、同時に両方にフォーカスするはずはありません。
質問の両方にフォーカスするの意味が、カーソルキーないしマウス操作を行えば、
[形名部番][入力品名]のどちらにでもフォーカスする事ができるという意味でしたら、これは当然の事です。
イベントのエラーではありません。

●質問の主旨に関しての私の推測
質問の意味は、製品区分が自社製品か他社製品かによって、それぞれ[形名部番][入力品名]の一方のみにフォーカスを許し、
他方にはフォーカスを禁止したいという事なのでしょうか。
もしそうであれば、使用するコマンドが違っております。
フォーカス設定とは、指定したオブジェクトにフォーカスを移動させる機能であり、
指定したオブジェクト以外にフォーカスを禁止する機能ではありません。

●フォーカスの禁止や許可を行うコマンド
その様な機能を得るのであれば、オブジェクト属性設定コマンドを使って、
オブジェクトに対してフォーカスの禁止や許可の設定を変更します。

佐田守弘(KS-00119)

9259 Re:イベントがうまく機能しない 宮城 2001/01/10-11:03
記事番号9252へのコメント
ながいさん、こんにちは。

佐田さんのおっしゃるとおり、「フォーカスする」の意味がわかりませんが、
イベントは本当に発生しているのでしょうか。

環境設定→一括→高度な設定→トレース出力ウインドウを使用するにチェック。
表示→トレース出力ウインドウの設定→トレース出力を開始するにチェック。

これで確認できます。

(もしやと思いますが、「ソース」を全角表記してませんか? この場合、イベントは発生するものの動きが変になります。)

9272 Re:質問内容確認>イベントがうまく機能しない ながい 2001/01/10-21:00
記事番号9254へのコメント
佐田さん ご教示ありがとう御座いました。
当方の希望としては,製品区分の内容により,「形名部番」「入力品名」の一方にカーソルがいかないようにしたいのですが,
別な方法があったらご指導願います。

9274 オブジェクト操作コマンドを使って下さい 佐田 守弘 2001/01/10-23:20
記事番号9272へのコメント
ながいさん
>当方の希望としては,製品区分の内容により,「形名部番」「入力品名」
>の一方にカーソルがいかないようにしたい
は、「メソッド呼び出し フォーカス設定」ではなく、「オブジェクト操作」コマンドで、オブ
ジェクト属性の変更をします。

つまり、
 手続き定義開始 製品区分::ソース値更新()
  ケース開始
   ケース ([製品区分]="自社製品")
    オブジェクト操作 @形名部番.フォーカスの設定="自動"
    オブジェクト操作 @入力品名.フォーカスの設定="入力不可表示"
   ケース ([製品区分]="他社製品")
    オブジェクト操作 @形名部番.フォーカスの設定="入力不可表示"
    オブジェクト操作 @入力品名.フォーカスの設定="自動"
  ケース終了
 手続き定義終了

として下さい。
それ以外にも、フォーカスを禁止にする設定や、非表示にする設定などを使う方法もあります。
いずれも、オブジェクトリストを表示すると、オブジェクト操作コマンドとそれに続く設定のパラメータが自動で作られますから、
お好きな方法を採用してみて下さい。

なお、私のサイトに、この様な例も掲載してあります。

佐田守弘(KS-00119)
9319 Re:オブジェクト操作コマンドを使って下さい ながい 2001/01/13-17:35
記事番号9274へのコメント
佐田さん ご指導ありがとう御座います。

「オブジェクト操作」コマンドを利用することは理解できました。
ご指導によりで下記の内容に変更しましたが,機能的には変化がありませんでした。
オブジェクトの属性設定で何か必用なのでしょうか?

> 手続き定義開始 製品区分::ソース値更新()
>  ケース開始
>   ケース ([製品区分]="自社製品")
>    オブジェクト操作 @形名部番.フォーカスの設定="自動"
>    オブジェクト操作 @入力品名.フォーカスの設定="使用不可表示"
>   ケース ([製品区分]="他社製品")
>    オブジェクト操作 @形名部番.フォーカスの設定="使用不可表示"
>    オブジェクト操作 @入力品名.フォーカスの設定="自動"
>  ケース終了
> 手続き定義終了
                                 By ながい
9322 御自身のフォームに合わせて作りましたか? 佐田 守弘 2001/01/14-00:53
記事番号9319へのコメント
ながいさん
>ご指導によりで下記の内容に変更しましたが,機能的には変化がありませんでした。

これはひょっとして私が書いた通りのものを、単にコピーして使っているだけと違いますか?

オブジェクト操作コマンドのパラメータに記述するオブジェクト名は、使用するフォームに合わせて作らないと、動作しません。
ながいさんからはどの様なオブジェクト名を使っているかの提示がないので、
私の方ではながいさんのフォームに合わせたコマンドを作る事はできません。
コマンドに書いた「形状部番」や「入力品名」は、私が例として仮に書いたオブジェクト名です。
これが、ながいさんのフォームと同じでない限り、私の提示したコマンドの例は、そのままでは動作しません。

BBSなどで提示されるイベントや一括処理は、あくまでも例題ですから、そのままコピーしてもおそらく使えないかのが普通です。
「この様に作る」を見て頂き、御自身の表の項目名や、フォームのオブジェクト名に合わせて、御自身で作る必要があります。

なお、オブジェクト属性設定コマンドは、直接書こうとすると、大抵の場合はオブジェクト名や設定パラメータの記述を
間違えて失敗するのが普通です。
フォームでオブジェクトリストを表示し、該当するオブジェクトを選び、右側のパラメータリストを設定すると、
右下に作るべきコマンドパラメータが自動で作られます。
慣れないうちは(慣れてもですが)この機能を使ってコマンドを記述して下さい。

参考までに述べておきますと、「形状部番」や「入力品名」は実際の項目名であろうと思いますが、
これを編集するフォームのオブジェクト名は別の名前が付いていると思います。
自動的に付けられるオブジェクト名は、テキストオブジェクトでは「t形状部番」あるいは「t形状部番_2」などになっているかも知れません。

佐田守弘(KS-00119)

戻る