タイマーについて

解決


マサ  2004-02-19 22:00:32  No: 111931  IP: [192.*.*.*]

よろしくお願いします。
では質問をさせていただきます。
form1とform2が用意されていてform1のタイマーが10から1ずつカウントダウン
されていき,0になるとform1を閉じてform2が表示されるというものを作っていますが
このプログラムでできると思ったんですが、
なぜか0から-1というふうに-の値まで行ってしまいます。なぜでしょう。
ご教授ぜひお願いします。
Private Sub Form_Load()
If Label1.Caption = 0 Then
Form1.Hide
Form2.Show
End If

End Sub

Private Sub Timer1_Timer()
Label1.Caption = Val(Label1.Caption) - 1

End Sub

編集 削除
たかみちえ  URL  2004-02-19 22:24:08  No: 111932  IP: [192.*.*.*]

タイマーはアンロードされるまで(たとえ非表示でも)動きますよ、
ですからそれは正常な動作です。
  あと、文字列から数値への変換は、速度が犠牲になりますし、あまり不用意に何回もするべきことではないと思います。
グローバル変数として整数型を宣言し、それを使うとよいかと。

編集 削除
マサ  2004-02-19 22:30:23  No: 111933  IP: [192.*.*.*]

すいません。初心者なもので・・・
どのようにすればよいか本当に簡単でいいのでソースをお願いできませんか?

編集 削除
oku  URL  2004-02-19 22:30:44  No: 111934  IP: [192.*.*.*]

>Label1.Caption = Val(Label1.Caption) - 1
常にマイナス1してますが…
ゼロになった後のカウントをどうしたいかは知りませんが、
10に戻すなり、Enabled プロパティをFalseにしないと。

編集 削除
ねろ  2004-02-19 22:34:48  No: 111935  IP: [192.*.*.*]

こんなことがしたいのかな
Private Sub Form_Load()
    Label1.Caption = "10"
    Timer1.Interval = 1000
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
    Label1.Caption = CStr(Val(Label1.Caption) - 1)
    If Val(Label1.Caption) <= 0 Then
        Timer1.Enabled = False
        Form1.Hide
        Form2.Show
    End If
End Sub

編集 削除
マサ  2004-02-19 22:35:29  No: 111936  IP: [192.*.*.*]

okuさんレスありがとうございます。
0になったらform1がアンロードされて、form2を表示させたいのですが
0になってもform1は消えないし、form2も表示されません。
それで困っています。

編集 削除
マサ  2004-02-19 22:38:29  No: 111937  IP: [192.*.*.*]

ねろさんまさしくそのとおりです。
どうもありがとうございました。
okuさん、たかみちえさん、どうもありがとうございました。感謝してます。
またいろいろあると思いますがw
よろしくお願いします。

編集 削除
マサ  2004-02-19 22:38:48  No: 111938  IP: [192.*.*.*]

解決しました。

編集 削除