過去の桐井戸端BBS (桐ver.8)
3791 「ソース値更新」と「編集文字列変更」 小川 伸二 1999/12/17-16:07
まいどお世話になります。

[テキストボックス]のイベントで「ソース値更新」と「編集文字列変更」
の違いと実行タイミングがわかりません。

「ソース値更新」は「入力後」イベントの後に実行されると
マニュアルにはありますが、「編集文字列変更」は
どのタイミングで実行されるのでしょうか?

「ソース値更新」のソースとはオブジェクトの属性テキストタブの
ソース(S)と理解してよろしいのでしょうか?
であれば、ここに表の項目を定義しているので表の項目値が変更された
後と考えられるのですが「ソース値更新」イベントで項目値を
変数に代入しても項目の変更前の値がセットされてしまいます。

よろしくお願いします。
3794 Re:「ソース値更新」と「編集文字列変更」 悲しげ 1999/12/17-17:05
記事番号3791へのコメント
どもっ、小川さん,
「編集文字列変更」イベントは、会話処理的に値を変更している時、
その最中に発生するイベントですから、間違いなく「ソース値更新」
イベントよりも前です。
実は私もよくは判っていないのですが、「ソース値更新」と云う言
葉を解釈しようとはしない方がいいみたいです、却って惑わされま
す。よって私は、カタカナのノリで「ソースチコーシン」として使
っています。(^^;)
想像するに、「入力後」イベント等では処理できないメソッドを実
現させるために、後から追加したイベントであって、名前もテキト
ーに付けてしまったのではないかと(根拠なし)。

>であれば、ここに表の項目を定義しているので表の項目値が変更
>された後と考えられるのですが「ソース値更新」イベントで項目
>値を変数に代入しても項目の変更前の値がセットされてしまいます。

ここで云う「項目値」が、「ソース値更新」イベントを定義したテ
キストオブジェクトを指すのだとしたら、それは使い方が間違って
いると思います、多分。「ソース値更新」イベントは、そのテキス
トオブジェクトの値を会話処理的に扱っている時、値を変更したか
否かに関わらず、[Enter]キーを押した時点で発生するイベントの
ような気がします(経験上)。このイベントが自動的に値を書き換
えたりするものではありません。値の変更はあくまで手動(会話処
理的)です。

なお、「ソース値更新」イベントは、当然ながら(表示モードでは
なく)訂正・挿入中に発生するイベントです。この時、同時に他の
項目値を変更することは、「行訂正」コマンドが使えないために一
般的にはできないのですが、「項目値代入」コマンドを使って、訂
正モード時でも他項目値を変更することができるようです。これが
このイベントの優位点のひとつのようです。
要するに、繰り返しになりますが、「ソースチコーシン」イベント
は、「入力後」等では実現できない処理を実現するための特殊なイ
ベントとでも考えておいた方が、泥沼に陥らないで済むかな。私は
今のところそんな風に割り切っています。(^^;)
誰か、よくお判りの方、説明して欲しいです。

と云う訳で、小川さんが何をやりたいのか判りませんが、「ソース
値更新」の語意にこだわらず、他の方法で考えた方がいいように感
じました。

3847 Re:「ソース値更新」と「編集文字列変更」 小川 伸二 1999/12/20-08:36
記事番号3794へのコメント
悲しげさんどうも有り難うございます。

>>であれば、ここに表の項目を定義しているので表の項目値が変更
>>された後と考えられるのですが「ソース値更新」イベントで項目
>>値を変数に代入しても項目の変更前の値がセットされてしまいます。

>このイベントが自動的に値を書き換えたりするものではありません。
>値の変更はあくまで手動(会話処理的)です。

説明が下手ですいません。
これは「変更前の値がセットされてしまう」ではなく「変更前の値が
セットされたまま」つまり変更後の項目値が変数に代入されない
ことを言いたかったのでした。

>要するに、繰り返しになりますが、「ソースチコーシン」イベント
>は、「入力後」等では実現できない処理を実現するための特殊なイ
>ベントとでも考えておいた方が、泥沼に陥らないで済むかな。私は
>今のところそんな風に割り切っています。(^^;)
>と云う訳で、小川さんが何をやりたいのか判りませんが、「ソース
>値更新」の語意にこだわらず、他の方法で考えた方がいいように感
>じました。

「ソース値更新」でなく「ソースチコウシン」という特殊なイベント
と言われるとますますこんがらがりそうですが...(^^;)
とにかくいろいろなケースを試してみて各イベントのタイミングを
つかんでみたいと思います。
有り難うございました。

3848 Re:「ソース値更新」と「編集文字列変更」 悲しげ 1999/12/20-12:01
記事番号3847へのコメント
どもっ、小川さん、何となく(^^;)やりたいことが判りました。
で、以下のように簡単なkevで試してみましたが、いずれの方
法でも値はきちんと変数に代入されているようです。
変ですねぇ、wfmの方のイベントチェックを忘れているとか?

-------- 方法12共通 --------
名札 メイン
変数宣言 文字列{&あ}  /*項目名は[あ]で文字列型とする*/


----------- 方法1 -----------
手続き定義開始 tあ::入力後(参照 文字列 &編集文字列,・・・
 &あ=&編集文字列  /*項目に値は未だ入っていないため*/
 確認 &あ
手続き定義終了

----------- 方法2 -----------
手続き定義開始 tあ::ソース値更新()
 &あ=[あ]     /*項目に値が既に入っているようだ*/
 確認 &あ
手続き定義終了
------------------------------

なお「編集文字列変更」イベントでは、項目には値が入って
ないのみならず、自動変数たる&編集文字列値も取得できない
ので、使う意味がないと思いました。

3854 Re:「ソース値更新」と「編集文字列変更」 小川 伸二 1999/12/20-15:48
記事番号3848へのコメント
悲しげさん分かり易い例題付きの解説有り難うございます。
今回の失敗は悲しげさんのコメント部分が全てでした。

私は、方法1と2をごっちゃにして記述してました

>手続き定義開始 tあ::入力後(参照 文字列 &編集文字列,・・・
> &あ=[あ]

  /*項目に値は未だ入っていないのに...*/

> 確認 &あ
>手続き定義終了
>

入力後イベントに項目値を代入してました。
これでNo.3794でいわれた

>「ソース値更新」イベントは想像するに、「入力後」イベント等では
>処理できないメソッドを実現させるために、後から追加したイベントで
>あって、名前もテキトーに付けてしまったのではないかと(根拠なし)。

が理解できました。
この辺は桐特有の日本語仕様がかえって混乱させているような気がします。
解ってないのは私だけ?...(笑)

今後もよろしくお願いします。

PS.質問の仕方がへたでお手数をおかけしました。

戻る