Visual LANSA フレームワーク ガイド > よくある質問 > VLF-ONE 画面のコンテンツへの変更が表示されない、または予想よりも遅れて表示される理由

VLF-ONE 画面のコンテンツへの変更が表示されない、または予想よりも遅れて表示される理由

VLF-ONE フィルターまたはコマンド・ハンドラーは通常の Visual LANSA Web のコードから成っています。

Visual LANSA Web 画面は RDMLX コードがコントロールを引き渡すまでは表示されるコンテンツを変更しません。

コントロールを引き渡すことで、Visual LANSA Web エンジンが画面への変更をすべて書く (書き換える) ことができるようになります。

つまり、画面の変更をして「現在ビジー」というメッセージを表示し、プログラムを 20 秒実行するといったことはできません。これは、Visual LANSA Web エンジンには画面の変更を描く機会が全くないからです。この「現在ビジー」のメッセージは、プログラムが完了した 20 秒後にしか表示されません。プログラムが実行の最後にこのメッセージをクリアするならば、結局ユーザーには何も表示されないことになります。同様に画面でカウンターを表示して更新する場合もプログラムからコントロールが渡されるまでは、その表示が変更されることはありません。   

画面の変更を行い、これがすぐに表示されるようにしたい場合は、コントロールを Visual LANSA Web エンジンに渡し、画面に変更が表示されるようにしなければいけません。

画面の変更が描かれるようにコントロールを引き渡す一般的な方法としは、次の 2 つがあります。

1 - サーバーモジュールを非同期に実行

通常、この方法は VLF-ONE のコード内の例えば次のようなメソッドが始まる箇所で行います。

     #COM_OWNER.avGotoBusyState Showbusytext(“Saving You Changes”) Animated(False)

 

そして、これがサーバーモジュールを非同期で実行して、データを保存します。このルーチンが完了すると、通常は次のように記述します。

      #com_Owner.avGotoFreeState

 

“Saving Your Changes” (変更を保存中) のビジー状態が表示される理由は、サーバーモジュールの非同期実行がコントロールを引き渡すからです。

これがまた非表示になる理由は、保存のプログラムは通常 GotoFreeState の後の実行で終了し、コントロールが引き渡されるからです。 

 

2 - タイマーの使用

タイマーの終了時にプログラムがコントロールを引き渡し、実際に行いたいことを開始 (または再開) することができます。例えば、「表示式進捗状況インジケーター」を更新する場合、タイマーを起動して処理を開始し、100 の処理を行った後タイマーを再度起動して停止し、更に100の処理を行い、タイマーを再度起動して停止するという動作を 100% 完了するまで繰り返します。   プログラムでタイマーを起動して停止する度に Visual LANSA Web エンジンが進捗インジケーターの表示を変更することができます。  

また以下も参照してください。

同期処理

非同期処理