Rubrik: Oberfläche · Effekte | VB-Versionen: VB4, VB5, VB6 | 29.08.02 |
Text-/Label-Ausgabe verzögern (Newsticker) Dieses Beispiel zeigt, wie sich eine Textausgabe in einem Label- oder TextBox-Control zeitlich verzögern lässt. | ||
Autor: Dieter Otter | Bewertung: | Views: 14.731 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Sicherlich kennen Sie auch solche Newsticker, bei denen der Text zeitlich verzögert ausgegeben wird, evtl. sogar noch mit Soundausgabe, so als ob der Text gerade von einer Schreibmaschine geschrieben würde.
So etwas lässt sich mit wenig Aufwand auch auf ein Text- oder Label-Control anwenden.
Option Explicit ' benötigte API-Deklaration Private Declare Function WaitForSingleObject Lib "kernel32" ( _ ByVal hHandle As Long, _ ByVal dwMilliseconds As Long) As Long Private Declare Function Beep Lib "kernel32" ( _ ByVal dwFreq As Long, _ ByVal dwDuration As Long) As Long
' Ewartet wird die Zeitangabe in Millisekunden! ' z.B. 1000 für 1 Sekunde Public Function Wait(ByVal mSek As Long) WaitForSingleObject -1, mSek End Function
Die Prozedur WriteText gibt den Text entweder in einem Label- oder einer TextBox aus.
' Langsame Textausgabe (Newsticker) Private Sub WriteText(cOutput As Control, _ sText As String, _ Optional ByVal iDelay As Integer = 50, _ Optional ByVal bSound As Boolean = True) Dim i As Integer Dim bIsLabel As Boolean bIsLabel = (TypeOf cOutput Is Label) With cOutput If bIsLabel Then .Caption = "" Else .Text = "" For i = 1 To Len(sText) ' Sound? If bSound Then ' Funktioniert nicht unter WinME! Beep 1000, iDelay / 2 End If If bIsLabel Then ' Label, also Caption-Eigenschaft .Caption = .Caption & Mid$(sText, i, 1) Else ' TextBox, also Text-Eigenschaft .Text = .Text & Mid$(sText, i, 1) End If ' Kurz warten... Wait iDelay ' Anzeige aktualisieren .Refresh Next i End With End Sub
Beispiel:
Erstellen Sie ein neues Projekt und fügen obigen Code in den Codeteil der Form ein. Platzieren Sie auf die Form ein TextBox-Control und setzen die Eigenschaft Locked auf den Wert True. Weiterhin benötigen wir noch einen CommandButton (Command1), der die Newsticker-Ausgabe startet.
Private Sub Command1_Click() WriteText Text1, _ "Aktuelle News unter http://www.vbarchiv.de" End Sub
Soll die Textausgabe in einem Label-Control erfolgen, geben Sie als ersten Paramater einfach den Namen des Label-Controls an:
WriteText Label1, _
"Aktuelle News unter http://www.vbarchiv.de"