過去の桐井戸端BBS (桐ver.8)
2940 イベントで訂正モードにするには 郷司 1999/10/18-22:19
フォームのテキストオブジェクトにフォーカスが取得されたとき
訂正モードへモードの変更をしたいのですが、イベントで

メソッド呼び出し @フォーム . 更新モード設定(2)

では、テキストオブジェクトのソースが変数の時は希望どおりに
訂正モードになりますが、ソースが項目名の場合はまったく同じ
にイベントを設定しても変化なく、表示モードのままです。
なにか訂正モードにする処理の方法がありますでしょうか?
2942 Re: 悲しげ 1999/10/19-00:21
記事番号2940へのコメント
どもっ、郷司さん、
実はよく判っていないのですが、(オブジェクトソースが項目
値・変数のどちらとも)次のようにして動かしています。

  method @t某.フォーカス設定()
  method @フォーム.更新モード設定(2)
  変数宣言 長整数{&文字位置,&文字数}}
  method @t某.編集選択位置取得(&文字位置,&文字数)
  method @t某.編集選択位置設定(&文字位置,-1)
    ・・・・・・・

  この後、何らかの機会で
  method @フォーム.更新モード設定(0)
  に戻してやる必要がありますが。

この方法は、いかすぱげてぃさんに教えてもらいました。
意味は、未だによく判らないので、私はともかく「定石」と
云うことで使っています。(^^;)
2944 Re: 郷司 1999/10/19-14:59
記事番号2942へのコメント
悲しげさん、どうもありがとうございます。

イベントが作動し始めるタイミングなどがいまいち理解できずに
困っています。(いろいろ試してはみているのですが...)

ウィンドウ会話 コマンドでフォームを表示したらば、すぐに入力できる
ように訂正モードにしたいのですが、悲しげさんの言われる「定石」は、
イベントハンドラのうちの何イベントで起動をさせているのですか?
2949 悲しげ 1999/10/19-22:04
記事番号2944へのコメント
どもっ、郷司さん、

>イベントが作動し始めるタイミングなどがいまいち理解できずに
>困っています。(いろいろ試してはみているのですが...)
>ウィンドウ会話 コマンドでフォームを表示したらば、すぐに入力できる
>ように訂正モードにしたいのですが、悲しげさんの言われる「定石」は、
>イベントハンドラのうちの何イベントで起動をさせているのですか?

確か、イベントでは「ウィンドウ会話」コマンドは使えなかったと思い
ますから、上記は何か変ですよ。(?_?)
通常イベントで問題無く使えるのは「フォーム呼び出し」コマンドです。
私はこのところ、これしか使っていません(「ウィンドウ作成」と「ウ
ィンドウ会話」は使わない)。

で、どのような機会に訂正モードにしたいのか、そしてそれを表示モー
ドに戻したいのはどのような時か、によって、使うイベントは異なるは
ずです。

仰せの場合ですと、会話処理的にダイレクトにフォームを開いた直後、
あるいは「フォーム呼び出し」で呼び出した直後に、某テキストobjに
フォーカスを移して、訂正モードにしたいと云うことであれば、本来
は「フォーム開始」イベントでできそうな予感もありますが、ちょい
と色々問題がありそうなので、「タイマー1」イベントなんかを使っ
ています。
-----------------------------------------
手続き定義開始 フォーム::タイマー1()
 method @フォーム.更新モード設定(2)
 変数宣言 長整数{&文字位置,&文字数}
 method @t某.編集選択位置取得(&文字位置,&文字数)
 method @t某.編集選択位置設定(&文字位置,-1)
 オブジェクト操作 @フォーム.タイマー1="0"
手続き定義終了
------------------------------------------
フォームのオブジェクト属性/イベントタブでは、タイマー1にチェック
を入れて、右側のタイマー値1を「0.1」とか「0.01」にしておきま
す。この辺の事情は、
http://www2u.biglobe.ne.jp/~s_tanaka/cgi-bin/bbs/bbs.cgi
の過去ログ8で触れられています。
2950 Re: 郷司 1999/10/19-23:14
記事番号2949へのコメント
丁寧にありがとうございます。
「フォーム呼び出し」 コマンドですか、全然頭の中になかったです。ありがとうございました2。
どしどしと活用したいと思います。

イベントを使わずに通常のコマンド
 行訂正 会話 * * *
のコマンドでも、思い通りに動くようになることはなりました。
目的が達成できれば方法はいろいろあるでしょうが
希望とすれば、イベントでやってみたかったのです。
2957 Re: いかすぱげてぃ 1999/10/20-09:45
記事番号2949へのコメント
横から口を出すようですみませんが…(^^;

>>イベントが作動し始めるタイミングなどがいまいち理解できずに
>>困っています。(いろいろ試してはみているのですが...)
>>ウィンドウ会話 コマンドでフォームを表示したらば、すぐに入力できる
>>ように訂正モードにしたいのですが、悲しげさんの言われる「定石」は、
>>イベントハンドラのうちの何イベントで起動をさせているのですか?
>
>確か、イベントでは「ウィンドウ会話」コマンドは使えなかったと思い
>ますから、上記は何か変ですよ。(?_?)
>通常イベントで問題無く使えるのは「フォーム呼び出し」コマンドです。
>私はこのところ、これしか使っていません(「ウィンドウ作成」と「ウ
>ィンドウ会話」は使わない)。

郷司さんは、古典一括から「ウインドウ作成&会話」でフォームを開いて、
その開いたフォームの処理はそのフォームのイベントで行うという風に
考えられているのではないでしょうか?>悲しげ様

こここらは独り言…

まず、前提になる問題として…
本当は「アクティブ」イベントってのがあるべきはずなんでしょうが、
なぜか、こいつが見送られてしまったから、この辺の処理は実に面倒。
ついでにその辺のメソッドも塞がれてしまってるし…

だから、フォーム開始イベントで代用しようとするのですが、
実はフォーム開始イベントは「フォーム開始直前」イベントであって、
仕様的にこいつも無理。

とすると…
イベントでは行なわず、更新モードに変える処理を記述したボタンをどこかに
設置して(透明ボタン)、それを「実行コマンド:フォーム開始時」に設定
するのが一応V8の定石ってことになるのでしょうが…

ところがどっこい、実は、「実行コマンド:フォーム開始時」にも仕様
じゃない動作をする不具合が潜んでいて、場合によっては破綻してしまう
こともあるので…

たははは、なんとまぁ…大変。
ということで、年末にでるであろうSP3版に期待してます。(^^;

ちなみに

> 変数宣言 長整数{&文字位置,&文字数}
> method @t某.編集選択位置取得(&文字位置,&文字数)
> method @t某.編集選択位置設定(&文字位置,-1)

ってのは、更新モードになった時のカーソルの位置を末尾に移動させている
処理ですので、更新モードへの変更そのものとはなーーーーんにも関係
ありませんです。(^^;

>フォームのオブジェクト属性/イベントタブでは、タイマー1にチェック
>を入れて、右側のタイマー値1を「0.1」とか「0.01」にしておきま
>す。この辺の事情は、
>http://www2u.biglobe.ne.jp/~s_tanaka/cgi-bin/bbs/bbs.cgi
>の過去ログ8で触れられています。
>

タイマーイベントも時に破綻しますよ。(^^;
2960 Re: 悲しげ 1999/10/20-12:01
記事番号2957へのコメント
どもっ、いかさま、

>郷司さんは、古典一括から「ウインドウ作成&会話」でフォームを開いて、
>その開いたフォームの処理はそのフォームのイベントで行うという風に
>考えられているのではないでしょうか?>悲しげ様

あっ、そうか、よく考えればそうですね。失礼しました<(_ _)>。>郷氏さん
「ウインドウ作成&会話」で開いたフォームからイベントを実行させ
ると云うやり方でうまく動くといいですね。このやり方で、どこまで
可能なのか、どこかで破綻しないか(さらに云えば将来性とか)など
の、漠とした不安もあったりしまして、この辺りの皆さんの体験談な
んかをお聞きできるとありがたいです。
(私の場合、先述のとおり、最近はは全て「フォーム呼び出し」オン
 リーで試行しているもんで)

>イベントでは行なわず、更新モードに変える処理を記述したボタンをどこかに
>設置して(透明ボタン)、それを「実行コマンド:フォーム開始時」に設定
>するのが一応V8の定石ってことになるのでしょうが…
>ところがどっこい、実は、「実行コマンド:フォーム開始時」にも仕様
>じゃない動作をする不具合が潜んでいて、場合によっては破綻してしまう
>こともあるので…

あ、そう、「定石」はその方式なんですか、たははは。勉強になり
ました。(^^;)
でも不具合があると云うことは・・・・、

>タイマーイベントも時に破綻しますよ。(^^;

私の場合は、大したことをやっている訳ではないからでしょうけど、
タイマーイベントでの設定で、今のところ何とか不具合に遭遇せずに
動いています。でも、辛うじて・・・なんでしょうねぇ。
ボタンの「実行コマンド:フォーム開始時」と、タイマーイベントと
どっちが破綻の可能性が高いでしょうかね? んなこと、判る訳あり
ませんね。(^^;)(^^;)

>ちなみに
>> 変数宣言 長整数{&文字位置,&文字数}
>> method @t某.編集選択位置取得(&文字位置,&文字数)
>> method @t某.編集選択位置設定(&文字位置,-1)
>ってのは、更新モードになった時のカーソルの位置を末尾に移動させている
>処理ですので、更新モードへの変更そのものとはなーーーーんにも関係
>ありませんです。(^^;

あら、そうだったの?
いえ、全然知らんでそのまんま使っていたんですが、これでようやく
意味が判りました。私はおまぬけ。(^^;)
なるほど、私の方の某処理の中で、この部分を抜いて動かしてみて、
挙動の違いを確認しました(その方が使いやすかったりして)。
そうか、先ず編集文字列の範囲を指定して次にカーソルを末尾に移動
させていると云う、確かに読んで字のごとくでした。

と云う訳で、郷氏さん、
-----------------------------------------
手続き定義開始 フォーム::タイマー1()
 method @フォーム.更新モード設定(2)
 オブジェクト操作 @フォーム.タイマー1="0"
手続き定義終了
------------------------------------------
でいいかもしれませんし、あるいはもっと簡単には、上述の「実行コ
マンド」での設定なんかでお試し下さい。
つまり、ボタンをひとつこさえて、その機能として「訂正」を設定し
ておく。フォームのobj属性/オプション/実行コマンド(開始時)
に該当するボタンを指定する(でいいんですよね?)。

ps:
いか様にメール送っていますんで、よろしく。
中味は、このコメントがらみで書き直す必要がありそうですが。(^^;)
2971 Re: 郷司 1999/10/21-00:14
記事番号2960へのコメント
いかすぱげてぃ さんまで巻き込んでしまいましてどうもです。

>す。この辺の事情は、
>http://www2u.biglobe.ne.jp/~s_tanaka/cgi-bin/bbs/bbs.cgi
>の過去ログ8で触れられています。

大変に参考になる情報が満載でした。ありがとうございました。>悲しげ様

>郷司さんは、古典一括から「ウインドウ作成&会話」でフォームを開いて、
>その開いたフォームの処理はそのフォームのイベントで行うという風に
>考えられているのではないでしょうか?>悲しげ様

そうなんです。まったくそのとおりで、「ウインドウ作成&会話」で会話
状態をベースとしておきたい、そこでボタンとかで変更するのでなく
最初に自動的に訂正モードにしたい。というのが希望なんですが最初の
投稿質問の説明がうまく出来ずに申し訳ありませんでした。
そこで
最初の質問のとおりにうまく行かなかったわけです。>悲しげ様 &
                        >いかすぱげてぃ様

ps.
前の投稿でうまく行きましたと書きましたが、「行訂正&会話」では
訂正モードのみで、表示モードに戻れないという使い勝手に不具合が
あるのを気がつきませんでした。

>ということで、年末にでるであろうSP3版に期待してます。(^^;

これなら、なんとかなるのでしょうか?
ま、現状で勉強して挑戦してみます。
2974 Re: 悲しげ 1999/10/21-10:20
記事番号2971へのコメント
どもっ、郷氏さん、

>前の投稿でうまく行きましたと書きましたが、「行訂正&会話」では
>訂正モードのみで、表示モードに戻れないという使い勝手に不具合が
>あるのを気がつきませんでした。

「行訂正&会話」が何を指しているのかがまたまた判りませんが(^^;)
表示モードに戻れないこと自体は不具合でも何でもありません。むしろ
当然の仕様ですから、sp3でも同じだと思います。(^^;)
簡単に云うと、これはDOS桐の「行訂正 帳票・・・」と同じ挙動になっ
ていると云うことです。したがって、[f・4]で確定、[Esc]で破棄して何
なく表示モードにすることができます。:-)

今回の郷氏さんのご要望が、訂正モードにしてフォームを開きたいと云
うことだったので、「実行ボタン:開始時」とか、「タイマー」イベン
トでメソッド呼び出しなどの話になったんですけど、最も安直な方法と
しては、モロ会話処理ふうに、[f・2]で訂正モード、[スペース]で項目訂
正モード、[f・4]確定/[Esc]破棄で表示モードと云う手があります。多
分できたと思うな。

あっ、これは桐の環境設定でファンクションキーを使えるようになって
いることが前提の話ですけど。(^^;)

表示モードにするのにちょっとだけWinっぽくしたいと云うことであれば、
機能「表示」のボタンを設けるとか、機能「表示/訂正」と云う交互にモ
ードを切り換えられるボタンも有り得ますし、どうせなら機能「訂正」の
ボタンも並べて配置するといいかもしれません。

kevのメソッド呼び出しで表示モードにするには、
  method @フォーム.更新モード設定(0)
とします。ただ、どのタイミングで自動的に表示モードに戻すのかは、ケ
ースバイケースです。やっていることのフラグを立てたり、「ソース値更
新」イベントを使ったり、・・・ただ「キーダウン」イベントで[Enter]と
[Esc]キーの働きを制御するのは、単項目訂正でない限り、なかなか面倒そ
うな気がします(と云うか、試す気にならなかっただけかも)。

戻る