過去の桐井戸端BBS (桐ver.7)
477 フォームのピクチャーオブジェクトの再描画タイミングについて 桐霧中 1998/10/28-09:14
桐7で,フォームを使って入力していますが,隅の方にピクチャーオブジェクトを設定しています。
このオブジェクトのソース画像を乱数を使って自動的に変更しています。(ファイル形式表示)
ふつうに考えて,「編集対象行を変更したときに再計算され,乱数により次の画像が表示される。」と思うのですが,編集行を変更しなくても次のタイミングで画像の書換えが行われており,原因が分らず困っています。
1 訂正モード
  常時書換えが行われる。
  画像ファイルの再読込が常時発生し,文字入力にも支障がでる始末です。
2 表示モード
  マウスを画面上で移動(ノークリック)するたびに画像変更。
  マウスを移動しない場合は,書換えは行われない。

桐7のフォーム(またはオブジェクト)で再計算のタイミングを設定できるのでしょうか?
それとも,私のマシン固有の現象でしょうか?
489 Re: 中本 1998/10/30-21:11
記事番号477へのコメント
「フォームのピクチャーオブジェクトの再描画タイミングについて」で書きました。

こんばんは。
質問の内容と若干違うかもしれませんが、桐霧中さんの言う現象が発生するのか改めて試したところ上記の現象は発生しなかったので報告します。
申し訳ありません長文になってしまいました。

まず一括処理の前に「表」と「フォーム」を次のように設定しました。
(表)
「データ.TBL」という名で作成して、[氏名]項目を作成しました。
一括処理の中で[氏名]を利用してレコード件数を調べるために使用するためのものです

(フォーム)
「データ入力.WFM」という名で作成して、次の行(レコード)へ進むボタンのオブジェクト名を「次レコード」にして、終了ボタンのオブジェクト名を「終了」としました。
そして、ピクチャを表示するオブジェクト名を「Photo」として、ピクチャソース名を表の項目名でなく、ファイル名で「Photo00.GIF」としました。
画像ファイル「Photo00.GIF」は、白い点一つだけの画像ファイルです。
一括処理を立ち上げたとき、乱数で指定したファイルが表示されるまでのほんの少しの間表示します。(目立たないようにするため)

乱数で表示する画像ファイル同じフォルダ内に5ヶ用意しました。
ファイル名は、Photo01.gif, Photo02.gif〜Photo05.gifです。

一括処理では以下のように作りました。

変数宣言 整数{&INPUT}
変数宣言 文字列{&BINPUT}
変数宣言 整数{&レコード件数 , &NUM , &レコード位置=1}
変数宣言 文字列{&ピクチャ名}

表 "データ.TBL",表番号=1,モード=専有,使用フォーム="データ入力.WFM"
項目集計 [氏名]
代入 &レコード件数=&件数
ジャンプ 行番号=&レコード位置
&NUM=#乱数(5)+1
&ピクチャ名="Photo"+#文字列(&NUM,2)+".gif"
ウィンドウ作成 フォーム,ハンドル=&INPUT
オブジェクト操作 ハンドル=&INPUT,@Photo{ピクチャソース=&ピクチャ名}

*(注意)オブジェクト操作コマンドの「ピクチャソース」は、半角カナ文字

繰り返し
  ウィンドウ会話 &INPUT,ボタン=&BINPUT
  条件 (&BINPUT="終了") 繰り返し中止
  IF (&BINPUT="次ボタン")
    IF (&レコード位置<&レコード件数)
      &レコード位置=&レコード位置+1
      ジャンプ 行番号=&レコード位置
      &NUM=#乱数(5)+1
      &ピクチャ名="Photo"+#文字列(&NUM,2)+".gif"  /*(4)*/
      オブジェクト操作 ¥
         ハンドル=&INPUT,@Photo{ピクチャソース=&ピクチャ名}/*(5)*/
    END
  END
繰り返し終了
ウィンドウ終了 &INPUT
終了

ここでは、ファイル名の操作で「表」を使わない方法で作成しましたが、「表」を利用した方法では(3)と(4)の「&ピクチャ名="Photo"+#文字列(&NUM,2)+".gif"」を以下のように変更しても同じように動きました。

 表 "Photoデータ.tbl",表番号=2
 ジャンプ 行番号=&NUM
 &ピクチャ名=[写真名]
 終了 表 2
490 Re: 中本 1998/10/30-21:19
すみません、間違えました。
最後の方に書いてある

ここでは、ファイル名の操作で「表」を使わない方法で作成しましたが、「表」を利用した方法では(3)と(4)の「&ピクチャ名="Photo"+#文字列(&NUM,2)+".gif"」を以下のように変更しても同じように動きました。

のところの(3)(4)は間違えて付けてしまいました。
一括処理にある
  &ピクチャ名="Photo"+#文字列(&NUM,2)+".gif"
の2カ所を指しています。
514 お礼 桐霧中 1998/11/4-08:54
記事番号490へのコメント
中本様
検証していただき,大変ありがとうございます。何と一括処理まで組んで検証していただいたようで本当にお手数かけました。この場を借りてお礼申上げます。

さて,実は私は一括処理は組んでいません。
桐7のフォーム機能のみを使って処理したいと思い,画像の乱数による選択についても,関数を使ってピクチャオブジェクトのソースに直に記入して処理していたところ,この様な状態となってしまったのです。
その後,プロパティを様々に変化させましたが,やっぱり同じです。
で,結局諦めて,同一画像を表示させるように変更しました。
不思議なことに,乱数数関数を外し,ダイレクトに画像ファイルを指定しますと,特に再計算が行われているような兆候はなく,データ入力もスムーズに行われます。何故でしょう?

もしまた何か有用な情報がありましたらぜひご教示ください。

戻る