過去の桐井戸端BBS (桐ver.8)
13281 kevファイルで変数値を連続して入力したい ぺて 2001/09/30-02:23
いつも参考にさせていただいています。
ウィンドウズの一括処理は楽しいですが
まだまだ自由に扱えるところまでいきません。
すこし疑問に思うところがあるので質問させてください。
桐V8sp6です。

フォームに600個程度の配列変数を表示、入力したい時
たとえば、次のようなフォームで

 −−−−−−−−−−−−−−−−−−
 | □□□□□…
 | □□□□□…
 | □□□□□…
 |
 |

□のところには、項目値を配列変数に代入し、
600個程度のレコードの項目値を表示します。
このフォーム上で、変数の値を入力してそれぞれのレコードの項目値にもどします。
このとき、それぞれの変数値を連続して入力するには、
それぞれのオブジェクトにイベントを設定して
メソッド呼び出し @フォーム . 更新モード設定(2)を
600個つくらなければならないのでしょうか。

実務の話ではないので
「くだらないこと考えるな」
というのであれば、それで結構なのですが
おわかりの方がいらっしゃればよろしくお願いします。
13283 Re:kevファイルで変数値を連続して入力するとき pokopon 2001/09/30-08:43
記事番号13281へのコメント
ぺてさん おはようございます

何をしたいのかイマイチ??? ですが。

>メソッド呼び出し @フォーム . 更新モード設定(2)
>を600個つくらなければならないのでしょうか。

ファミリを設定すれば?
変数の格納されているテキストボックスで、ファミリとしてこのイベントを定義すれば1回の宣言で解決しますよ。

13286 Re:kevファイルで変数値を連続して入力するとき ぺて 2001/09/30-12:02
記事番号13283へのコメント
pokoponさん、ありがとうございます。

>ファミリを設定すれば?
>変数の格納されているテキストボックスで、ファミリとしてこのイベントを定義すれば
>1回の宣言で解決しますよ。

最初はそう思ったんですが、イマイチ使い方がわかりません。
ファミリのイベントにはフォーカス系とマウスのイベントしかないのです。
ソース値更新のイベントはどこで設定すればいいのでしょう。

>何をしたいのかイマイチ??? ですが。
抽象的な質問で申し訳ありません
パズルを解く一括処理を遊びで作っています(^^ゞ

13294 Re:kevファイルで変数値を連続して入力するとき アックン 2001/09/30-15:01
記事番号13281へのコメント
こんにちは。

>このとき、それぞれの変数値を連続して入力するには、
>それぞれのオブジェクトにイベントを設定して
>メソッド呼び出し @フォーム . 更新モード設定(2)
>を600個つくらなければならないのでしょうか。

そうです。
ソース値更新はファミリーが用意されていませんから、オブジェクト毎に書くしかないです。
これはかなりくたびれる作業です。(^^;

アックン(=^・^=)
13297 一気に変換でよければ... natsu 2001/09/30-17:39
記事番号13286へのコメント
>抽象的な質問で申し訳ありません
>パズルを解く一括処理を遊びで作っています(^^ゞ


カード型フォームだと定義も大変ですから、ここは一覧表フォームで作業されていると仮定で...
配列変数全部を変換する一括処理です
ご希望の処理とはかなり遠いとは思いますが、大量の変数を処理するときのひな形の様なものです
変数宣言などにも応用できます

パズルの回答が入っている項目名を[データ]とし、レコード数は配列の総数と同じだけ用意します
変数は &回答[]としておきます

変数宣言 固有,長整数{&回答[600]}
変数宣言 固有,長整数{&i}
注釈 データ型は適当です とりあえず記述しましたがあらかじめ局所変数として登録

ジャンプ 行番号=先頭
繰り返し
行番号 &i
コマンド "代入 &回答["+#STR(&i)+"]=[データ]"
ジャンプ 行番号=次行
条件 (#eof=1) 繰り返し中止
繰り返し終了


一覧表フォームに、上記イベントを割り付けたコマンドボタンを配置すればOKです
PCの能力にもよりますが、スピードは遅いかもしれません

13302 Re:kevファイルで変数値を連続して入力するとき pokopon 2001/09/30-22:27
記事番号13286へのコメント
ぺてさん こんにちは

>>ファミリを設定すれば?
>最初はそう思ったんですが、イマイチ使い方がわかりません。
HTMLヘルプに使用例が載っています。参考にして下さい。

>ソース値更新のイベントはどこで設定すればいいのでしょう。
ソース値更新イベントはありませんが、
ご希望の
>メソッド呼び出し @フォーム . 更新モード設定(2)
であれば、
オブジェクト喪失のイベントで代用できませんか?

あるいは、どうしてもソース値更新でとおっしゃるのでしたら、
過去ログ No.13105 を参考にして、タイマ1イベントでソース値の変更を捕らえて、それぞれの処理をすればどうでしょうか?
ちょっと面倒ですが、
600個設定するよりも、ず〜っと楽かと思いますよ。


13305 Re:kevファイルで変数値を連続して入力するとき(解決) ぺて 2001/10/01-05:08
記事番号13302へのコメント
pokoponさんどうもありがとうございます。

おっしゃるとおり、タイマー1イベントを利用してうまくいきました。
過去ログそのままの処理ですが、次のようにしました。

まずはタイマー1イベント
--------------------------
手続き定義開始 フォーム::タイマー1()
 method @フォーム.更新モード取得(&mode)
  if(&mode=8)
   method @フォーム.フォーカスオブジェクト取得(&focus)
   オブジェクト操作 @フォーム.タイマー1 = "0"
  end
手続き定義終了
--------------------------

次はファミリにオブジェクト取得のイベント
ファミリ名は"値”です
--------------------------
手続き定義開始 値::フォーカス取得(文字列 &喪失オブジェクト名)
 オブジェクト操作 @フォーム.タイマー1 = "1"
  if (&喪失オブジェクト名=&focus)
   method @フォーム.更新モード設定(2)
  end
手続き定義終了
--------------------------

これで望むような処理になりました。
どうもありがとうございました。
13306 Re:kevファイルで変数値を連続して入力するとき(解決) アックン 2001/10/01-07:37
記事番号13305へのコメント
なるほど、これはいいですね。
私もさっそく使わせてもらいます。
ありがとうございます。>pokoponさん、ぺてさん

アックン(=^・^=)

戻る