vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Oberfläche · Effekte   |   VB-Versionen: VB4, VB5, VB629.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 OtterBewertung:     [ Jetzt bewerten ]Views:  14.730 
www.tools4vb.deSystem:  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"

Dieser Tipp wurde bereits 14.730 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel