Immer wieder mal taucht die Frage auf: Wie kann ich ein Ereignis auslösen, wenn ein Button eine gewisse Zeit gedrückt wird. Wie immer gibt es auch hierverschiedene Möglichkeiten dies zu realisieren. Fangen wir also mit einem neuen Projekt an. Auf eine leere Form setzen wireinen CommandButton und nehmen diesen Code: Option Explicit Private bIsDown As Boolean Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) Dim nTime As Single nTime = Timer bIsDown = True Do While bIsDown If Timer - nTime <= 5 Then ' Ereignis nach 5 Sekunden auslösen MsgBox "Die 5 Sekunden sind um" Exit Do End If DoEvents Loop End Sub Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, _ X As Single, Y As Single) bIsDown = False End Sub Wenn Sie nun das Projekt starten und den Button geklickt halten, erscheintnach 5 Sekunden eine MsgBox - und das alles ohne Timer-Control. Kommen wir nunzu den anderen Möglichkeiten, die mit einem Timer-Control arbeiten. Wir könnenhier eine kleine "Ziehung der Lottozahlen" simulieren. Hierzu fügenwir in unser Projekt eine zweite Form ein und ändern im bisherigen Code dieStelle mit der MsgBox wie folgt ab: ..... ' Ereignis nach 5 Sekunden auslösen Form2.Show ..... Auf der zweiten Form ordnen wir jetzt folgende Steuerelemente an:
In das Code-Modul der Form wird jetzt folgender Code eingefügt: Option Explicit ' zuerst das Form_Load-Ereignis Private Sub Form_Load() Dim i As Integer ' Timer-Intervall setzen Timer1.Interval = 100 Timer1.Enabled = False ' ComboBox mit Einträgen füllen (1 bis 20 Sekunden) For i = 1 To 20 Combo1.AddItem CStr(i) + " Sekunden" Next ' Voreinstellung der Anzeige in der ComboBox Combo1.Text = "10 Sekunden" ' CommandButtons beschriften Command1.Caption = "Timer Version" Command2.Caption = "Zeit Version" End Sub ' jetzt der Code für das Timer-Steuerelement Private Sub Timer1_Timer() ' Zufallsgenerator initialisieren Randomize Timer ' das Ergebnis ins Label schreiben Label1.Caption = Int(49 * Rnd) + 1 DoEvents End Sub ' und nun noch den Code für die CommandButtons Private Sub Command1_MouseDown(Button As Integer, _ Shift As Integer, X As Single, Y As Single) ' beim Anklicken des Buttons Timer initialisieren ' Zeit läuft, so lange Button angeklickt ist Timer1.Enabled = True End Sub Private Sub Command1_MouseUp(Button As Integer, _ Shift As Integer, X As Single, Y As Single) ' beim Loslassen des Buttons Timer abstellen Timer1.Enabled = False End Sub Private Sub Command2_Click() Dim T2 As String ' beim Anklicken des Buttons wird der in der ' ComboBox eingestellte Wert ausgewertet T2 = Second(Now) + Val(Combo1.Text) If T2 <= 60 Then T2 = T2 - 60 Do ' Zufallsgenerator initialisieren Randomize Timer ' Zahlen im Label anzeigen Label1.Caption = Int(49 * Rnd) + 1 DoEvents Loop Until Second(Now) = T2 End Sub Wenn Sie jetzt Ihr Projekt starten und auf der ersten Form den CommandButton5 Sekunden lang angeklickt halten, wird die zweite Form eingeblendet. KlickenSie jetzt den Button "Timer Version". So lange Sie diesen angeklicktlassen, sehen Sie im Label wechselnde Zahlen. Erst beim Loslassen desButtons bleibt eine Zahl stehen. Stellen sie in der ComboBox eine Zeit ein oderlassen Sie die voreingestellten 10 Sekunden stehen und klicken Sie dann auf denButton "Zeit Version". Hier müssen Sie den Button nicht gedrückthalten um die wechselnden Zahlen im Label zu sehen. Nach Ablauf dereingestellten Zeit bleibt eine Zahl stehen. Unsere "Ziehung der Lottozahlen" hätten wir jetzt - jetztbräuchten wir nur noch jemanden, der uns einen Gewinn auszahlt Diese Seite wurde bereits 9.018 mal aufgerufen. |
sevAniGif (VB/VBA) Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Buchempfehlung Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||
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. |