[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/06/15(Fri) 16:48
投稿者名:kamikawa
Eメール:
URL :
タイトル:
処理件数の表示
こんにちは VB初心者ですが 教えてください
時間の掛かるテキストデータの更新処理の間に 処理件数を表示させようと ラベルのCaptionに件数をセットしても表示されません 何か簡単に処理件数を表示する方法があればご教授下さい。

投稿時間:2007/06/15(Fri) 17:07
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: 処理件数の表示
> 時間の掛かるテキストデータの更新処理の間に 処理件数を表示させようと ラベルのCaptionに件数をセットしても表示されません 何か簡単に処理件数を表示する方法があればご教授下さい。

再描画処理の都合上、連続して Caption を書き換えるような場合には、
そのプロシージャを抜けるまで、画面には反映されません。

強制的に描画させるため、適宜、Refresh するなどの処置が必要になるでしょう。

Private Sub Command1_Click()
    Dim F As Integer
    For F = 1 To 10000
        Label1.Caption = F
    Next
End Sub

Private Sub Command2_Click()
    Dim F As Integer
    For F = 1 To 10000
        Label1.Caption = F
        Label1.Refresh
    Next
End Sub

投稿時間:2007/06/15(Fri) 18:28
投稿者名:るしぇ
Eメール:
URL :
タイトル:
処理速度にも注意
再描画処理は時間が掛かります。

ループ内で行っている処理の内容にもよりますが、
処理時間の半分以上(つまり処理件数を表示しなければ
処理時間が半分になる)になってしまうこともしばしば。

処理の間引きも考慮に入れることをお勧めします。

Private Sub Command3_Click()
    Dim F As Integer
    For F = 1 To 10000
        Label1.Caption = F
        If F Mod 7 = 0 Then
            Label1.Refresh
        End If
    Next
End Sub

投稿時間:2007/06/16(Sat) 19:35
投稿者名:kamikawa
Eメール:
URL :
タイトル:
Re: 処理速度にも注意
魔界の仮面弁士さん 早速の回答ありがとうございました。
テストしてみたら 起動直後は正常に表示されるのですが、他のプログラム等を起動して一度フォーカスがなくなる?(裏画面に隠れる)とその後は元に戻しても表示されなくなりました
何か回避策はありますでしょうか?
 OS は XP Pro と Vistaでも同じ現象でした。よろしくお願いします

投稿時間:2007/06/18(Mon) 12:41
投稿者名:るしぇ
Eメール:
URL :
タイトル:
Re^2: 処理速度にも注意
> テストしてみたら 起動直後は正常に表示されるのですが、他のプログラム等を起動して
> 一度フォーカスがなくなる?(裏画面に隠れる)とその後は元に戻しても表示されなく
> なりました
ラベルは表示更新されています?Label1.Refresh は文字通り、ラベルの描画処理を
行いますから、フォームの再描画が必要な場合はフォームの Refresh が必要です。

…それ以外の原因だと、ちょっと分からないですね。新規プロジェクトに
魔界の仮面弁士さんの示されたコードのみを書いて、Me.Refresh して、
再描画処理が実行されることを確認してください。