過去の桐井戸端BBS (桐ver.8)
17080 サブフォームでの更新モードを制御したいのだが変な挙動になり理解できない 原山 正洋 2002/08/24-16:36

mainform sub1 sub2
の3つのフォームのうち、mainformには各種タグをつけて
表示する内容をきりかえるようにしています。
sub1 は sub2 の装飾用です。(額縁みたいなものです)

sub2 のtxtbox1に

手続き定義開始 txtbox1::ソース値更新()
メソッド呼び出し @フォーム.更新モード設定( 2 )

手続き定義終了

手続き定義開始 txtbox1::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
メソッド呼び出し @フォーム.更新モード設定( 2 )

手続き定義終了

とイベントを仕込んで、
mainformを呼び出し、txtbox1をクリックすると編集できるようになります。
ところが、enterすると表示モードになってしまいます。
さらに何行目かでクリックして、enterすると今度は、訂正モードのまま続けて編集できます。
上記イベントをmainform.kev sub2.kev のどちらに設定しても同じです。
どうにもこの挙動が理解出来ません。
なお、ソース値更新イベントをはずすと常に表示モードになります。

どなたかこの解決方法を教えていただけませんか?
よろしくお願いいたします。

17091 Re:サブフォームの更新モード制御について質問です(桐V8sp6) 原山 正洋 2002/08/26-21:21
記事番号17080へのコメント
>手続き定義開始 txtbox1::ソース値更新()
>メソッド呼び出し @フォーム.更新モード設定( 2 )
>
>手続き定義終了

これを
手続き定義開始 txtbox1::ソース値更新()
確認
メソッド呼び出し @フォーム.更新モード設定( 2 )

手続き定義終了

として実行してみました。
マウスでクリック→訂正モードに入ります
値を入力→enter
確認画面
表示モード

これを何回か繰り返すと
突然
確認画面
編集モード

以後は何回繰り返しても、編集モード
となります。

これはソース値更新モードでのメソッド呼び出しのバグ?
あるいはこのような呼び出し方が不正?
さらに疑問????状態です。

これはどういうことなのでしょうか?

私としてはクリックした後はタグをクリックしない限りは、ずっと
@フォーム.更新モード設定( 2 )
を継続したいだけなのです。
説明不足でしたらご指摘ください。

17093 Re:サブフォームの更新モード制御について質問です(桐V8sp6) pokopon 2002/08/27-00:38
記事番号17091へのコメント
原山 正洋さん こんにちは
なかなかリプライがつきませんね。 最初、どうしたいのかが分かりませんでした。(^_^;)

>私としてはクリックした後はタグをクリックしない限りは、ずっと
>@フォーム.更新モード設定( 2 )
>を継続したいだけなのです。

なるへそ。つまり、
1回目のクリックで「訂正モード」
その後、リターンキーを押してもこの「訂正モード」を継続し
2回目のクリックで「表示モード」
にしたい、ということですね。

>これはソース値更新モードでのメソッド呼び出しのバグ?
>あるいはこのような呼び出し方が不正?
>さらに疑問????状態です。

は、さだかではありませんが、訂正モードを継続したいのであれば、
入力後イベントにおいて、
&入力継続 = 1
とすればどうでしょうか?

参考:データ編集で発生するイベント(from ONnojiさんの「イベント道場」から)
http://www.geocities.co.jp/SiliconValley-Bay/7565/hassei.htm

そのためには「1回目のクリック」と「2回目のクリック」を区別する必要がありますので、
テキストボックスのオブジェクト名を「txtbox1」とし、&Flagは事前に局所変数で宣言しておきます。

手続き定義開始 txtbox1::マウス左ダウン(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 変数宣言 自動, 数値{&mode}
 メソッド呼び出し @フォーム.更新モード取得( &mode )
 if ( &mode <>0 )
   &Flag = 0
   メソッド呼び出し @フォーム.更新モード設定( 0 )
else
&Flag = 1
 end
手続き定義終了

さらに、

手続き定義開始 txtbox1::入力後(参照 文字列 &編集文字列,長整数 &モード,参照 長整数 &入力継続)
条件 ( &Flag )  &入力継続 = 1
手続き定義終了

でどうでしょうか?

でも、これでは、データの「ドラッグ&コピー」ができませんよね?
でも、いいのかな? (非常に入力・編集しにくいような・・・・ (^_^) )


17094 と云うより「行訂正」と「項目訂正」の違い? 悲しげ 2002/08/27-01:06
記事番号17091へのコメント
どもっ、原山さん
どうもやろうとしていることが判りません。

「ソース値更新」イベントと云うのは、普通は訂正・行追加などの更新中のモードの時に、
Enterキー等で入力を確定した場合に発生します。
書かれていることから想像するには、この時に「更新モード設定」メソッドで
訂正モードにしたい、と云うことのように読めてしまいます。
もしそうだとすれば、云い換えると「訂正モードの時に訂正モードにする」ことになり、ハテナ?となる訳です。
「更新モード設定」メソッドなんか使わないでそのままほっといても訂正中のモードのままの筈ですから。
同様に、あるテキストオブジェクトをマウス左クリックすると普通は訂正モードになります。
訂正モードになっているところをさらに「更新モード設定」メソッドで訂正モードにしたいとは、これ如何に?となる訳です。



と書いていて、もうひとつの可能性に思い至りました。(^^;)

>私としてはクリックした後はタグをクリックしない限りは、ずっと
>@フォーム.更新モード設定( 2 )
>を継続したいだけなのです。

これを実現したいだけなら、「ソース値更新」イベントや「更新モード設定」メソッドを使う必要は全くありません。
普通は<F2>キーからの訂正では、一般的には全てのテキストについて
行訂正(つまり訂正モードが継続)となりますし、<Space>キーやマウス左クリックだと単項目訂正となります
(云いかえると訂正モードが非継続)。
でも、<Space>キーやマウス左クリックでも行訂正(つまり訂正モードを継続)させたいのならば、
フォーム定義時に「フォーム」オブジェクトについて「編集」タブから「訂正モード(R)」にチェックを入れることで
お望みの挙動となると思われます。
なお、オブジェクト設定画面が上記のようになっていない場合は、
上部ツールバー/書式/定義画面の設定で、「詳細プロパティを使用する」にチェックを入れておく必要があります。
17099 Re:サブフォームの更新モード制御について質問です(桐V8sp6) 原山 正洋 2002/08/27-10:27
記事番号17093へのコメント
pokoponさん、悲しげさんはじめまして
おかげさまで解決しました。

>なかなかリプライがつきませんね。 最初、どうしたいのかが分かりませんでし
>た。(^_^;)
そうですよね。舌足らずの説明ではだめですね。

sub1に一覧表形式のsub2を配置しています。
sub1は単にそのためだけのフォームですsub2より少し大きめにして見栄えをよくするためです。
これをmainformに配置し、sub1の上側には1月〜12月のタグを作成、
sub1の右側には支店のタグを作成。
これで月別・支店別のデータが表示されるようにしています。
一覧表でデータ入力するのはtxtbox1だけです。
各支店のデータは20〜30くらいのものです。
これをクリックしたら後は連続してデータを入れられるようにしたいというわけです。

pokoponさんの
>手続き定義開始 txtbox1::入力後(参照 文字列 &編集文字列,長整数 &モー
>ド,参照 長整数 &入力継続)
> 条件 ( &Flag )  &入力継続 = 1
>手続き定義終了
>
は入力後のデータを検査して具合が悪い場合に入力を継続させるものですよね。
これでは、永久にその行で編集モードのままなのではと思いつつ試しました。
やはり想像どおりでした。

そして、悲しげさんの
>継続)させたいのならば、フォーム定義時に「フォーム」オブジェクトに
>ついて「編集」タブから「訂正モード(R)」にチェックを入れることでお
>望みの挙動となると思われます。
で望みどうりになりました。

一つのフォームの場合は、私の方法でも動いていましたが、見栄えを考えて
複数のフォームにしてこんな現象がおきたので、わけがわからなくなったのです。
つくづく質問をすることの難しさを感じております。
しかし、それでも質問した甲斐がありました。
お二人には感謝申し上げます。


17100 Re:サブフォームの更新モード制御について質問です(桐V8sp6) pokopon 2002/08/27-14:50
記事番号17099へのコメント
うまく解決されたようで、何よりです。

最近、私もボケが始まり、いくら質問の内容を読み返しても、何をされたいのかが???
なので、スカタンな回答になりました。m(__)m

(といっても、未だに、何をしたかったのかが??ですけど)

入力するテキストボックスが1だけなのに連続入力?
タグって?

ますます謎は深まる・・・・。

まぁっ、いっか。 解決したようだし。 > 悲しげさん


戻る