過去の桐井戸端BBS (桐ver.9)
31258 メソッド呼び出しを元に戻すにはどうしたらよいのでしょうか 豊田 2006/02/27-23:05
はじめてメソッドに挑戦しています。
イベントハンドラのなかで次のようなメソッドを書き込んでみました。
テキストオブジェクトのソースに設定した変数(&メッセージ)を、イベントハンドラの定義実行中は別の表示に変えたいのですが、

&メッセージ = "更新中・・・ しばらくお待ち下さい"
メソッド呼び出し @フォーム.変数変更()

これはうまくいったようにみえるのですが、完了後もメッセージが元に戻りません。
それで完了後は別のメッセージを出そうと思い、

&メッセージ = "更新中・・・ しばらくお待ち下さい"
メソッド呼び出し @フォーム.変数変更()
&メッセージ = "取込が完了しました。"
メソッド呼び出し @フォーム.変数変更()

としてみたら、後のメッセージだけが実行終了後に表示されて、
動作中に"更新中・・・"は表示されません。実行中は"更新中・・・"の表示に変わり、
完了すると"完了しました"か、もしくは元のメッセージにもどるようにするには
どうしたらよいのでしょうか。

最近桐のイベントを勉強し始めた初心者です。どうかよろしくお願いします。
31260 Re>再描画系メソッド 悲しげ 2006/02/27-23:26
記事番号31258へのコメント
一般的に云えば、
(1)「更新」処理の直前に、"更新中・・・ しばらくお待ち下さい"
をメソッド呼び出しで表示させ、
(2)次に「更新」処理を行い
(3)「更新」処理が終了した直後に"取込が完了しました。"とします。

(2)の記述をしないで(1)(3)としている、または(1)(3)(2)と記述してしまっているようなことは・・・・さすがにありませんよね?(^^;)

では、う〜ん、処理の内容によっては、表示の変更がしにくいものもあるかもしれません。
「更新中」とは、具体的にどのような処理をしていますか?(記述している一括処理コマンドは何か)

もしかして、「描画更新」method を(1)と(3)の直後に記述すると有効かもしれません。

31264 Re>再描画系メソッド 悲しげ 2006/02/27-23:43
記事番号31260へのコメント
「描画更新」method 関連補足

◆「変数変更」method のリファレンスより
○変数を使用しているフォーム上のオブジェクトを、すべて再描画するよう予約します。
○予約した再描画は、イベントハンドラがすべて終了したときに実行されます。

◆「再描画」method のリファレンスより
○指定したオブジェクトの操作結果だけをウィンドウ上に反映させるために、再描画を
予約します。
・・・・・
○再描画を予約したオブジェクトは、[描画更新]メソッドで再描画させることができます。
○[描画更新]メソッドを使用しなかった場合は、イベントハンドラがすべて終了したときに再描画されます。

後者(再描画)の記述の方が判りやすいですね。
あくまで再描画の予約に過ぎず、予約は当該イベントハンドラを抜けた時点で実行される。
イベントハンドラの途中で予約を実行させたい場合は、「描画更新」methodの出番となる。

ちなみに私は(今ごろになってこんなこと云うのもナンですが)「再描画」と
「変数変更」の違いがあまりよく判らない。(^^;)

31265 Re:Re>再描画系メソッド 豊田 2006/02/28-04:06
記事番号31260へのコメント
初めての投稿だったのですが、いきなり悲しげさんより返事がもらえて、ちょっと興奮気味です。
どうもありがとうございます。

悲しげさんは No.31260「Re>再描画系メソッド」で書きました。
>(1)「更新」処理の直前に、"更新中・・・ しばらくお待ち下さい"
>をメソッド呼び出しで表示させ、
>(2)次に「更新」処理を行い
>(3)「更新」処理が終了した直後に"取込が完了しました。"とします。
>(2)の記述をしないで(1)(3)としている、または(1)(3)(2)と記述し
>てしまっているようなことは・・・・さすがにありませんよね?(^^;)

上で書かれていますが、最初は(2)の後に(1)(3)を続けて書いてたように思います。
「思います」というのは、「更新」処理がどこまでを指すのかよくわからないからです。
一つのコマンドボタンに3つの機能を割り当てました。
機能名1 ファイル名入力
機能名2 手続き実行
機能名3 手続き実行

それで最初は機能名3のパラメータで指定した手続き開始イベントハンドラの中で上記のように(2)(1)(3)の順番で書いてありました。

手続き定義開始 SelectFile( )
(省略)
手続き定義終了

手続き定義開始 Append ( 文字列 &filename )
(省略)
手続き定義終了

手続き定義開始 tikan ( )
変数宣言 固有, 数値 { &FC , &OK }
&FC = #数値( #文字置換( &FileLast , ".jpg" , "" ) )
メソッド呼び出し @フォーム.変数変更()
&メッセージ = "更新中・・・しばらくお待ちください。"
置換 終了状態 = &OK , [新ファイル名] = #文字列( #数値(#直前値( [] , #文字列(&FC ) ))+1 , 6 ) + ".jpg" , \
[size(01)] = #ファイルサイズ( [パス]+[ファイル名] ) , [size(KB)] = #切り上げ([size(01)]÷1024 , 0 ) , \
[date] = #ファイル属性( [パス]+[ファイル名] , 2 )
メソッド呼び出し @フォーム.変数変更()
&メッセージ = "取り込みが完了しました。"
手続き定義終了

3つめの手続きは、上の2つでjpgファイルを[ファイル名]と[パス]を桐に取り込んだあとに、
残りの項目を置換で入力しました。
これ自体はうまくいったのですが、ファイル数が1000近くになると、置換に時間がかかるため、
メソッド呼び出しをあとから追加しました。最初は2つのメソッド呼び出しを並べてあったのですが、
悲しげさんの書かれたものを呼んで、上記のように訂正しました。
しかし、後ろのメッセージ"取り込みが完了しました"しか表示されません。

職場から投稿したので、自宅で同じようなものを作って試しています。
明日、職場で残りの方法も試すことにします。
31266 Re:Re>再描画系メソッド 豊田 2006/02/28-04:18
記事番号31265へのコメント
訂正します。

>一つのコマンドボタンに3つの機能を割り当てました。
>機能名1 ファイル名入力
>機能名2 手続き実行
>機能名3 手続き実行

と書きましたが、

>手続き定義開始 SelectFile( )
>(省略)
>手続き定義終了
>
>手続き定義開始 Append ( 文字列 &filename )
>(省略)
>手続き定義終了

は機能名2の手続き実行で、機能名1がその前にあります。
31270 Re:メソッド呼び出しを元に戻すには ONnoji 2006/02/28-10:06
記事番号31258へのコメント
>&メッセージ = "更新中・・・ しばらくお待ち下さい"
>メソッド呼び出し @フォーム.変数変更()
>&メッセージ = "取込が完了しました。"
>メソッド呼び出し @フォーム.変数変更()
>としてみたら、後のメッセージだけが実行終了後に表示されて、動作中に"更
>新中・・・"は表示されません。実行中は"更新中・・・"の表示に変わり、完
>了すると"完了しました"か、もしくは元のメッセージにもどるようにするには
>どうしたらよいのでしょうか。

変数に値を代入した後に、
[変数変更]メソッドを実行するようにすれば改善しそうな気がしますが…
試していないのでタラレバですが、例えば…

<変更前>

手続き定義開始 tikan ( )
 変数宣言 固有, 数値 { &FC , &OK }

 &FC = #数値( #文字置換( &FileLast , ".jpg" , "" ) )
 メソッド呼び出し @フォーム.変数変更()
 &メッセージ = "更新中・・・しばらくお待ちください。"

 置換 終了状態 = &OK , …

 メソッド呼び出し @フォーム.変数変更()
 &メッセージ = "取り込みが完了しました。"

手続き定義終了

<変更後>

手続き定義開始 tikan ( )
 変数宣言 固有, 数値 { &FC , &OK }

 &FC = #数値( #文字置換( &FileLast , ".jpg" , "" ) )

 &メッセージ = "更新中・・・しばらくお待ちください。"
 メソッド呼び出し @フォーム.変数変更()

 置換 終了状態 = &OK , …

 &メッセージ = "取り込みが完了しました。"
 メソッド呼び出し @フォーム.変数変更()

手続き定義終了


■蛇足

以下の拙作:HPもご参考になるかもしれません(ならないかもしれません)。

<描画更新、変数変更、再描画>
 ↓
http://www.geocities.jp/siliconvalley_bay_7565/kakko_log.htm#no3


31271 Re:メソッド呼び出しを元に戻すには 豊田 2006/02/28-12:32
記事番号31270へのコメント
ONnojiさん

>変数に値を代入した後に、
>[変数変更]メソッドを実行するようにすれば改善しそうな気がしますが…
>試していないのでタラレバですが、例えば…

自宅で作り直したときの記入ミスで、職場のkevは「変数に値を代入した後に、[変数変更]メソッ
ドを実行する」になっていました。

><変更後>
>
>手続き定義開始 tikan ( )
> 変数宣言 固有, 数値 { &FC , &OK }
>
> &FC = #数値( #文字置換( &FileLast , ".jpg" , "" ) )
>
> &メッセージ = "更新中・・・しばらくお待ちください。"
> メソッド呼び出し @フォーム.変数変更()
>
> 置換 終了状態 = &OK , …
>
> &メッセージ = "取り込みが完了しました。"
> メソッド呼び出し @フォーム.変数変更()
>
>手続き定義終了


再度、職場のkevを<変更後>のようにやってみたのですが、やはり後ろの"取り込みが完了しました
"しか表示されません。途中の"変更中・・・"が表示されません。
これからONnojiさんのHPも参考にして勉強してみます。

31272 うまくいきました 豊田 2006/02/28-13:27
記事番号31262へのコメント
悲しげさん
>[描画更新]メソッドで再描画させることができます。
>[描画更新]メソッドを使用しなかった場合は、イベントハンドラがすべて終了したとき
>に再描画されます。

うまくいきました。

手続き定義開始 SelectFile( )
&メッセージ = "更新中・・・ しばらくお待ち下さい"
メソッド呼び出し @フォーム.変数変更()
メソッド呼び出し @フォーム.描画更新()
変数宣言 自動, 数値{&cnt}

手続き定義終了

手続き定義開始 Append ( 文字列 &filename )

手続き定義終了

手続き定義開始 tikan ( )
変数宣言 固有, 数値 { &FC , &OK }
&FC = #数値( #文字置換( &FileLast , ".jpg" , "" ) )
置換 終了状態 = &OK ,・・・

&メッセージ = "取り込みが完了しました。"
メソッド呼び出し @フォーム.変数変更()
手続き定義終了

上のように書いたところ、始まるとすぐに"更新中・・・"が表示されて、終わると"取り込みが完了しました。"が表示されるようになりました。
思い通りの結果が得られて、満足です。どうもありがとうございました。
31273 解決しました 豊田 2006/02/28-13:33
記事番号31270へのコメント
悲しげさんのアドバイスにあったのですが、いま試したところ無事解決しました。
メソッド[描画更新]で、表示されるようになりました。
どうもありがとうございました。

戻る