[リストへもどる]
一括表示

投稿時間:2003/07/11(Fri) 10:41
投稿者名:michiko
Eメール:
URL :
タイトル:
経過時間の表示
こんにちは、初めて投稿致します。
経過時間の表示なのですが、Timerを使うとイベントごとに?
処理が発生するのですよね。
ですが[ボタン1]を押してから開始する処理の経過時間を
1秒ごとに表示させたいと思っています。
そういう場合はどうしたら良いでしょうか?

経過時間の取得はできているのですが、それをラベルに随時
反映させることができないでいます。

よろしくお願いします。

投稿時間:2003/07/11(Fri) 10:57
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re: 経過時間の表示
> 経過時間の表示なのですが、Timerを使うとイベントごとに?
> 処理が発生するのですよね。

??
よく意味が分からないです…。

> ですが[ボタン1]を押してから開始する処理の経過時間を
> 1秒ごとに表示させたいと思っています。
> そういう場合はどうしたら良いでしょうか?

Timerコントロールを使ってみてはいかがでしょうか?

投稿時間:2003/07/11(Fri) 11:20
投稿者名:michiko
Eメール:
URL :
タイトル:
Re^2: 経過時間の表示
お返事ありがとうございます。

実はTimerを使って

private sub command1()

  timer.interval = 1000
  処理
  timer.interval = 0

end sub

private sub timer_timer()

  label1.caption = [経過時間]

end sub

という風にすると、command1の[処理]の経過時間を1秒おきに表示させたいのですが、
処理をしている間は timer_timer の処理が動いていないようなのです。
command1の処理が終了した時点で、1度だけlabel1へ経過時間が表示されます。
つまり終わった時間だけが表示されてしまうんです・・・

色々やってみて、例えばForm_loadの中で
timer.interval = 1000
と書くと、フォームが表示されてからの経過時間が、label1に刻々と刻まれるのですが、
command1のボタンを押した時点で、label1の経過時間が止まってしまいます。
そしてcommand1の処理が終了すると、また刻々と経過時間を刻みます。

うまく説明できなくて、またよく分からない文章になっていましたら教えてください。
よろしくお願いします。

投稿時間:2003/07/11(Fri) 11:22
投稿者名:michiko
Eメール:
URL :
タイトル:
Re^3: 経過時間の表示
> private sub command1()
>
>   timer.interval = 1000
>   処理
>   timer.interval = 0
>
> end sub
>
> private sub timer_timer()
>
>   label1.caption = [経過時間]
>
> end sub
>
> という風にすると、command1の[処理]の経過時間を1秒おきに表示させたいのですが、
> 処理をしている間は timer_timer の処理が動いていないようなのです。
> command1の処理が終了した時点で、1度だけlabel1へ経過時間が表示されます。
> つまり終わった時間だけが表示されてしまうんです・・・

すみません、間違いです。
こうすると確か、Timerは動作しませんでした。
よろしくお願いします。

投稿時間:2003/07/11(Fri) 12:28
投稿者名:NAO★
Eメール:
URL :
タイトル:
Re^3: 経過時間の表示
処理の途中に DoEvents を入れてみてください

投稿時間:2003/07/11(Fri) 13:06
投稿者名:michiko
Eメール:
URL :
タイトル:
Re^4: 経過時間の表示
> 処理の途中に DoEvents を入れてみてください
お返事ありがとうございます。

DoEventsを入れてみると、
その箇所箇所では経過時間が変更されるのですが、
継続して1秒おきには表示されません。
1秒
10秒
15秒・・・
という風に、その瞬間の経過時間しか表示されないようです・・・

何度もすみません。
また何か方法がありましたら教えていただきたいです。
ありがとうございます。

投稿時間:2003/07/11(Fri) 14:19
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: 経過時間の表示
すみません。早とちりをしたみたいですね!m(__)m
削除します。

投稿時間:2003/07/11(Fri) 14:41
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re^5: 経過時間の表示
> DoEventsを入れてみると、
> その箇所箇所では経過時間が変更されるのですが、
> 継続して1秒おきには表示されません。
> 1秒
> 10秒
> 15秒・・・
> という風に、その瞬間の経過時間しか表示されないようです・・・

ひょっとして、もの凄く重い処理をしてませんか?
確かにDoEventsを通る時にしかイベントは発生しないんで、
それでも1秒ごとにタイマーイベントを取得したいなら別スレッドで処理するしかないような気がしますが…。

投稿時間:2003/07/11(Fri) 20:23
投稿者名:michiko
Eメール:
URL :
タイトル:
Re^6: 経過時間の表示
> > DoEventsを入れてみると、
> > その瞬間の経過時間しか表示されないようです・・・
> ひょっとして、もの凄く重い処理をしてませんか?

お返事ありがとうございました!
はい、確かに重たい処理をしています・・・(--;
でもだからこそ?イライラしないように、止まっているんじゃないか?って
思わないように、処理中もカチカチと動く時計のようなものが欲しいって
思っていました。

> 確かにDoEventsを通る時にしかイベントは発生しないんで、
> それでも1秒ごとにタイマーイベントを取得したいなら
> 別スレッドで処理するしかないような気がしますが…。
すみません!
「別スレッドで処理する」という意味がよく分かりません(--;
もしよろしかったら、教えていただけたら幸いです・・・

再度のお返事ありがとうございました!

投稿時間:2003/07/14(Mon) 10:14
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re^7: 経過時間の表示
> 「別スレッドで処理する」という意味がよく分かりません(--;
> もしよろしかったら、教えていただけたら幸いです・・・

いや、実は私も最近になってスレッドをちょっとやった程度なんであんまりよく知らないんですよ。
えーっと、マルチタスクとか…。
すいません、よく分かってないですf^^;

要は本筋の処理とは別の処理を作るんです。
重い処理を別処理に分けて、本処理では経過時間を表示するとか。
または、その逆とか……。

スレッドについてはこの掲示板でも何度か見かけたので過去ログを検索したり、
Googleとかで調べてみて下さい。
あんまり理解していない私の説明よりも分かりやすい説明があると思いますんで(^^;

投稿時間:2003/07/16(Wed) 18:12
投稿者名:michiko
Eメール:
URL :
タイトル:
Re^8: 経過時間の表示
> > 「別スレッドで処理する」という意味がよく分かりません(--;
> 要は本筋の処理とは別の処理を作るんです。
> 重い処理を別処理に分けて、本処理では経過時間を表示するとか。
> または、その逆とか……。
なるほど・・・
別々に動かす、というコトですね!

> スレッドについてはこの掲示板でも何度か見かけたので過去ログを検索したり、
> Googleとかで調べてみて下さい。
> あんまり理解していない私の説明よりも分かりやすい説明があると思いますんで(^^;
はい(^^;
私のほうこそ、頼っちゃってすみません!
自力で調べられるチカラがつくよう頑張ります!

お返事が遅れて申し訳ありません。
何度もお返事頂いて本当にありがとうございました(^^)

投稿時間:2003/07/14(Mon) 11:58
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^7: 経過時間の表示
たしか、VB6.0ではマルチスレッドはできないとか。
VB5.0 ならマルチメディアタイマーが使用できるようですが!

> でもだからこそ?イライラしないように、止まっているんじゃないか?って
> 思わないように、処理中もカチカチと動く時計のようなものが欲しいって
> 思っていました。

ループ処理をしておられるのなら、経過時間を表示するのではなく
後**件 又は 後**秒 のようなカウンターを表示されたらいかがでしょうか?

投稿時間:2003/07/16(Wed) 18:16
投稿者名:michiko
Eメール:
URL :
タイトル:
Re^8: 経過時間の表示
お返事ありがとうございました。

> たしか、VB6.0ではマルチスレッドはできないとか。
> VB5.0 ならマルチメディアタイマーが使用できるようですが!
「マルチメディアタイマー」なるものがあったのですね・・・!
(私は6.0しか知らないもので・・・^^;)

> ループ処理をしておられるのなら、経過時間を表示するのではなく
> 後**件 又は 後**秒 のようなカウンターを表示されたらいかがでしょうか?
なるほど!
何も時間だけが目安じゃないですよね。
「後**件」という表示は全然思いつきもしてませんでした!

お返事が遅れてしまって申し訳ありませんでした。

この場を借りて、お返事下さった皆さまにお礼申し上げます(^^)
見ず知らずの人からこんな風に色々教えて頂いて本当に感謝しています。
本当にありがとうございました。
私もいつか、こういう掲示板で誰かの質問に答えれるように頑張ります!