C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 設定した時間が来たらテロップを流す


(過去ログ 107 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■63894 / inTopicNo.1)  設定した時間が来たらテロップを流す
  
□投稿者/ kiri (1回)-(2012/10/25(Thu) 12:35:38)

分類:[VB.NET/VB2005 以降] 

2012/10/26(Fri) 10:07:40 編集(投稿者)
2012/10/26(Fri) 09:54:20 編集(投稿者)修正いたしましたすみません;;
2012/10/26(Fri) 09:51:34 編集(投稿者)
2012/10/26(Fri) 09:49:12 編集(投稿者)
2012/10/26(Fri) 09:48:20 編集(投稿者)
2012/10/25(Thu) 12:44:53 編集(投稿者)
2012/10/25(Thu) 12:43:59 編集(投稿者)

<pre><pre>使用ソフト:VisualStadio2008
使用 言語:VB
学校で作っててわからないところがあったので質問させていただきます。
指定した時間になるとtextBox1に『時間になりました』と右方向から左方向へ流れるテロップみたいにしたいのですが・・・
10時10分0秒(10:10:0)に設定したとして時間になると2秒くらいだけ進み、その後は止まってしまいます。
--------------------------------------------------------------------------------------------
Public Class Form1
Dim dummytime(5) As Date
Private Const LasTEXT As String = " 時間になりました "
Dim j As Integer



Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
j = 1

'読み込み時timer1を有効にする
Timer1.Enabled = True

Call Timer2_Timer() ' 初期表示
With Me.Timer1
.Interval = 150 ' 更新時間の設定
.Start()
End With
End Sub


'画像を表示またはテロップ行うtimer1
Private Sub Timer1_timer(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Dim dtNow As DateTime = DateTime.Now.ToString("hh:mm:ss") '今の時間をdtNowに入れる
Dim sText As String ' 表示するメッセージ
Static iCnt As Integer ' 次回の表示開始位置
Dim i As Integer ' ループ


'時間設定 『timeSerial:時,分,秒』 配列に入れる。
Dim dummytime(5) As Date
dummytime(0) = TimeSerial(9, 50, 40) '1個目の時間設定
dummytime(1) = TimeSerial(10, 20, 10) '2個目の時間設定
dummytime(2) = TimeSerial(10, 30, 20) '3個目の時間設定
dummytime(3) = TimeSerial(10, 40, 30) '4個目の時間設定
dummytime(4) = TimeSerial(10, 50, 40) '5個目の時間設定

'iが4を超えるとき抜ける
For i = 0 To 4

'設定iと今の時間を比べて同じだったら
If dummytime(i) = dtNow Then
Timer2.Interval = 1000
Timer2.Enabled = True

'テロップを流す処理
sText = Microsoft.VisualBasic.Strings.Mid$(LasTEXT, iCnt + 10)
sText = sText & Microsoft.VisualBasic.Strings.Left$(LasTEXT, iCnt)
Me.TextBox1.Text = sText ' メッセージの表示

' 次の表示開始位置を計算
iCnt = (iCnt + 1) Mod Microsoft.VisualBasic.Strings.Len(LasTEXT)

i = i + 1

End If
Next
End Sub
Private Sub Timer2_Timer()

End Sub
End Class

補足
上のコードにどのようなコードを付け加えたらいいのかいろいろ調べたのですがわからなかったので
もしよろしければコードを教えてくださると助かります><
下のコードは時間に関係なく、テストでボタン押すと流れるようにはできたのですが、これを時間がきたらテロップを20秒間くらい流れるようにする方法が調べても無理でした。
Public Class Form1

Dim dummytime(5) As Date
Private Const LasTEXT As String = " 時間になりました"


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'テスト(テロップ)
Timer3.Enabled = True
Timer3.Interval = 250
End Sub

Private Sub Timer3_tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
Dim sText As String ' 表示するメッセージ
Static iCnt As Integer ' 次回の表示開始位置

'テロップを流す処理
sText = Microsoft.VisualBasic.Strings.Mid$(LasTEXT, iCnt + 1)
sText = sText & Microsoft.VisualBasic.Strings.Left$(LasTEXT, iCnt)
Me.TextBox1.Text = sText ' メッセージの表示

' 次の表示開始位置を計算
iCnt = (iCnt + 1) Mod Microsoft.VisualBasic.Strings.Len(LasTEXT)

End Sub
End Class



お手数をおかけしますがご回答のほどよろしくお願いいたします<(_ _)>
コメント入れてくれるとすごく助かります><</pre></pre>
引用返信 編集キー/
■63896 / inTopicNo.2)  Re[1]: 設定した時間が来たらテロップを流す
□投稿者/ shu (83回)-(2012/10/26(Fri) 09:06:08)
2012/10/26(Fri) 09:35:56 編集(投稿者)

No63894 (kiri さん) に返信

> 使用 言語:VB
> 学校で作っててわからないところがあったので質問させていただきます。
> 指定した時間になるとtextBox1に『時間になりました』と右方向から左方向へ流れるテロップみたいにしたいのですが・・・
> 10時10分0秒(10:10:0)に設定したとして時間になると2秒くらいだけ進み、その後は止まってしまいます。
> --------------------------------------------------------------------------------------------

以下のような感じでどうでしょう?
Timerは1つでアラーム待機と表示を兼用したほうがよいです。
VisualBasic名前空間はあまり使用したくないので同等の処理を使用した方が良いです。
テロップのスクロール部分は文字列に対するIndexをマイナス指定することにより左に余白がある状態から
開始するようにしています。
提示されたコードについてタイマーイベント内では出来る限りループしないようにした方がよいです。

コードを貼り付けたらエラーになってしまいましたので省略します。
引用返信 編集キー/
■63897 / inTopicNo.3)  Re[2]: 設定した時間が来たらテロップを流す
□投稿者/ kiri (2回)-(2012/10/26(Fri) 09:55:39)
2012/10/26(Fri) 10:08:19 編集(投稿者)

No63896 (shu さん) に返信

> コードを貼り付けたらエラーになってしまいましたので省略します。


申し訳ございません 修正いたしました。
コードを貼っても大丈夫だと思います。<(_ _)>
引用返信 編集キー/
■63927 / inTopicNo.4)  Re[1]: 設定した時間が来たらテロップを流す
□投稿者/ Jitta (11回)-(2012/10/30(Tue) 06:39:00)
Jitta さんの Web サイト
No63894 (kiri さん) に返信
あなたがしたい方法とは違うので、適切に修正して下さい。

' 新規に WindowsApplication を作成
' フォーム上に、Label, TextBox, Button を1個ずつ配置
' フォーム上に、Timer を3個配置し、Name を ScrollTimer, StartTimer, StopTimer に変更
' テキストボックスに開始時間を "HH:mm" 等、DateTime にパースできる形で入力し、button1 をクリックする。
' その時間になると20秒間、"時間になりました" を表示する。
' "時間になりました" は、ウインドウの右端から左端へスクロール表示される。
Public Class Form1
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.Label1.Text = String.Empty
        Me.StartTimer.Stop()
        Me.ScrollTimer.Stop()
        Me.StopTimer.Stop()
        Me.StopTimer.Interval = 20 * 1000
    End Sub

    Private Function CheckTime(ByRef setTime As DateTime) As Boolean
        Dim s As System.Globalization.DateTimeStyles = Globalization.DateTimeStyles.AllowWhiteSpaces _
                                                       Or Globalization.DateTimeStyles.AssumeLocal
        If DateTime.TryParse(Me.TextBox1.Text, Nothing, s, setTime) = False Then
            MessageBox.Show(Me, "時間の指定が正しくありません")
            Return False
        End If

        If setTime < DateTime.Now Then
            MessageBox.Show(Me, "既に過ぎています")
            Return False
        End If

        Return True
    End Function

    Private Sub StartScrolling(ByVal source As Object, ByVal e As EventArgs) Handles StartTimer.Tick
        Me.StartTimer.Stop()
        Me.Label1.Text = "時間になりました"
        Me.Label1.Left = Me.Width
        Me.ScrollTimer.Start()
        Me.StopTimer.Start()
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim setTime As DateTime
        If Me.CheckTime(setTime) = False Then Return
        Me.Button1.Enabled = False
        Me.TextBox1.Enabled = False
        Me.StartTimer.Interval = CInt(setTime.Subtract(DateTime.Now).TotalMilliseconds)
        Me.StartTimer.Start()
    End Sub

    Private Sub ScrollTelop(sender As System.Object, e As System.EventArgs) Handles ScrollTimer.Tick
        Me.Label1.Left -= 10
        If Me.Label1.Left < Me.Label1.Width Then
            Me.Label1.Left = Me.Width
        End If
    End Sub

    Private Sub StopScrolling(sender As System.Object, e As System.EventArgs) Handles StopTimer.Tick
        Me.StopTimer.Stop()
        Me.ScrollTimer.Stop()
        Me.Label1.Text = String.Empty
        Me.TextBox1.Enabled = True
        Me.Button1.Enabled = True
    End Sub
End Class

引用返信 編集キー/
■63946 / inTopicNo.5)  Re[2]: 設定した時間が来たらテロップを流す
□投稿者/ nagi (3回)-(2012/10/31(Wed) 09:35:42)
No63927 (Jitta さん) に返信

書いてくださいましてありがとうございます。
いえいえ参考にさせていただきますm(__)m
引用返信 編集キー/
■63952 / inTopicNo.6)  Re[3]: 設定した時間が来たらテロップを流す
□投稿者/ たっちゃん (2回)-(2012/10/31(Wed) 12:11:50)
No63946 (nagi さん) に返信
> ■No63927 (Jitta さん) に返信
>
> 書いてくださいましてありがとうございます。
> いえいえ参考にさせていただきますm(__)m
解決済み
引用返信 編集キー/
■63954 / inTopicNo.7)  Re[4]: 設定した時間が来たらテロップを流す
□投稿者/ howling (23回)-(2012/10/31(Wed) 15:30:40)
2012/10/31(Wed) 15:30:57 編集(投稿者)

kiriさんとnagiさんとたっちゃんさんは同じ人なのでしょうか?
でしたら、同名の名前に統合して頂きたいと思います。
詳しくは利用規約をご覧ください。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -