ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 12.02.2003

Diese Seite wurde zuletzt aktualisiert am 12.02.2003
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Schreibmaschine

Zurück...


Anzeige

(-hg) mailto:hg_typewriter@aboutvb.de

Schreibmaschinen-Effekte, bei denen ein Text so zu sagen vor den Augen des Anwenders "eingetippt" wird, können Sie am besten mit Hilfe eines Timers realisieren. Sie können die Verwaltung des Ablaufs direkt im Code des Forms, auf dem der Timer platziert ist, codieren. Sie können aber auch die Verwaltung eines Schreibablaufs in eine Klasse packen, wie wir es Ihnen im folgenden Beispiel der Klasse clsTypeWriter zur Ausgabe in einem Label zeigen.

Textausgabe "wie eingetippt"

Textausgabe "wie eingetippt"

Sie initialisieren eine Instanz der Klasse mit dem Aufruf der Start-Methode und übergeben ihr dabei den auszugebenden Text, das Label, in dem der Text ausgegeben werden soll, und ein Timer-Steuerelement, das den Takt der Ausgabe steuern soll. Optional können Sie das Takt-Interval des Timers setzen (Voreinstellung: 300) und ebenso optional festlegen, ob der Inhalt der Caption-Eigenschaft des Labels beim Start gelöscht werden soll. Ist Letzteres der Fall, wird eine "Schreibmarke" (Unterstrich) als Anfangsinhalt der Caption-Eigenschaft des Labels zugewiesen. Sol der Inhalt nicht gelöscht werden, wird der Unterstrich angefügt, falls der Inhalt nicht schon damit endet.

Private mCaption As String
Private mLabel As Label

Private WithEvents eTimer As Timer

Public Sub Start(Caption As String, Label As Label, _
 Timer As Timer, Optional ByVal Interval As Long = 300, _
 Optional ByVal Clear As Boolean = True)

  mCaption = Caption
  Set mLabel = Label
  Set eTimer = Timer
  With eTimer
    Select Case Interval
      Case Is > 0
        .Interval = Interval
    End Select
    .Enabled = True
  End With
  With mLabel
    If Clear Then
      .Caption = "_"
    ElseIf Right$(.Caption, 1) <> "_" Then
      .Caption = .Caption & "_"
    End If
  End With 
End Sub

Da die Variable, in der die Referenz auf den Timer in einer Ereignisempfänger-Variablen (Withevents...) abgelegt wird, treffen die Timer-Ereignisse auch in der Timer-Ereignisprozedur in dieser Klasse ein.

Ist noch genügend Text in mText vorhanden (mehr als 1 Zeichen), wird das erste Zeichen an den Caption-Text des Labels angefügt. Der Unterstrich als Schreibmarke wird zuvor entfernt und wieder ans Ende gehängt. Anschließend wird mText um das erste Zeichen gekürzt. Ist nur noch ein einziges Zeichen zur Ausgabe in mText vorhanden, wird mText gelöscht und die Ausgabe erfolgt ohne Anhängen der Schreibmarke. Ist mText nun leer, wird beim nächsten Eintreffen des Timer-Ereignisses der Timer gestoppt. Die Referenz-Variablen werden freigegeben und es wird das Ereignis Done ausgelöst, um dem "Besitzer" der Klasse zu signalisieren, dass die Ausgabe abgeschlossen ist.

Public Event Done()

Private Sub eTimer_Timer()
  Select Case Len(mCaption)
    Case 0
      Set mLabel = Nothing
      eTimer.Enabled = False
      Set eTimer = Nothing
      RaiseEvent Done
    Case 1
      With mLabel
        .Caption = Left$(.Caption, Len(.Caption) - 1) _
         & Left$(mCaption, 1)
      End With
      mCaption = ""
    Case Else
      With mLabel
        .Caption = Left$(.Caption, Len(.Caption) - 1) _
         & Left$(mCaption, 1) & "_"
      End With
      mCaption = Mid$(mCaption, 2)
  End Select
End Sub

Dieses Ereignis können Sie dazu verwenden, die Start-Methode erneut aufzurufen. So können Sie die Ausgabe wiederholen, neue bzw. aktualisierte Texte ausgeben, oder eine Sammlung (Array oder Collection) von Texten zyklisch ausgeben. Letzteres sehen Sie im folgenden Code-Beispiel:

Private WithEvents eTypeWriter As clsTypeWriter

Private mTexts() As String
Private mTextIndex As Integer

Private Sub cmdStart_Click()
  mTextIndex = mTextIndex + 1
  If mTextIndex > UBound(mTexts) Then
    mTextIndex = LBound(mTexts)
  End If
  eTypeWriter.Start mTexts(mTextIndex), Label1, tmrTypeWriter
End Sub

Private Sub eTypeWriter_Done()
  If chkRepeat.Value Then
    cmdStart_Click
  End If
End Sub

Private Sub Form_Load()
  ReDim mTexts(1 To 2)
  mTexts(1) = "ABOUT Visual Basic"
  mTexts(2) = "Das Webmagazin"
  Set eTypeWriter = New clsTypeWriter
End Sub

Beispiel-Projekt und Klasse clsTypeWriter (typewriter - ca. 3,5 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer