Druck nach Timer

Sliver

Erfahrenes Mitglied
Tastendruck nach Timer

Grüße,

ich möchte gerne ein Programm erstellen welches nach einer bestimmten Zeit eine Taste (von der Tastatur z.B. UPARROW) gedrückt wird.

Nun meine Fragen:


1. Wie kann ich einer Textbox sagen das sie nur Zahlen akzeptieren soll?
2. Wie kriege ich die wählbaren Tasten (z.B. das UPARROW) in einer ComboBox?
3. Wie liest der Start-Button die Zeit in Milisekunden aus der Text Box und die Taste welche gewählt wurde aus der ComboBox?
4. Wie kann ich das ganze wiederholen lassen in der angegebenen Zeit die in der TextBox steht?


Wie (schon wieder eine "Wie") ihr mekrt habe ich bisher sogut wie keine Erfahrung mit VB. Nur die Trainingsprogramme aus einem Buch.

Zur Info noch: Ich habe Visual Basic 6.0


Ich danke schon vielmals im vorraus.


Sers
Sliver


*edit*
Oder weis zumindest jemand wonach ich suchen soll?
*edit*
 
Zuletzt bearbeitet:
1. Wie kann ich einer Textbox sagen das sie nur Zahlen akzeptieren soll?
Dazu must du im KeyPress-Ereignis deiner Textbox folgenden Code reinschreiben:
Code:
Private Sub Text1_KeyPress(KeyAscii As Integer)
   If InStr(1, "0123456789", Chr$(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
2. Wie kriege ich die wählbaren Tasten (z.B. das UPARROW) in einer ComboBox?
Durch eine Schleife kannst du nur Ascii-Codes oder das zugehörige Zeichen hinzufügen:
Code:
Dim i As Integer

For i = 0 To 255
   Combo1.AddItem Chr$(i)   'oder auch:  Combo1.AddItem i      für Ascii-Codes
Next i
Wenn du so etwas wie richtige namen (also z.B.: UPARROW) reinschreiben willst must du es manuell hinzufügen:
Code:
Combo1.AddItem "UPARROW"
Combo1.AddItem "DOWNARROW"
...
3. Wie liest der Start-Button die Zeit in Milisekunden aus der Text Box und die Taste welche gewählt wurde aus der ComboBox?
Du nimmst dir einfach den Text aus der TextBox und den Text aus der ComboBox - fertig! :
Code:
Private Sub Command1_Click()
   Dim milliseconds As Long
   Dim keyPressed As Long
   
   milliseconds = Text1.Text
   keyPressed = Combo1.Text
End Sub
4. Wie kann ich das ganze wiederholen lassen in der angegebenen Zeit die in der TextBox steht?
Dafür nimmst du dir ein Timer-Objekt (das tolle mit der Uhr :)) gibt dem Steuerelement ein Interval (in Millisekunden) und führst dann die Befehle im Event Timer1_Timer auf:
Code:
Private Sub Form_Load()
   Timer1.Interval = Text1.Text
End Sub

Private Sub Timer1_Timer()
   Dim milliseconds As Long
   Dim keyPressed As Long
   
   milliseconds = Text1.Text
   keyPressed = Combo1.Text
End Sub

Hoffe ich habe das jetzt so verständlich genug rübergebracht ;)

mfG,
MAN
 
1. Wie kann ich einer Textbox sagen das sie nur Zahlen akzeptieren soll?
Das würde ich im Gegensatz zu MAN so lösen:
Code:
Private Sub Text1_KeyPress(KeyAscii As Integer)
    'Die Backspace-Taste zum löschen der Eingabe zulassen:
    If KeyAscii = 8 Then Exit Sub
    'Wenn keine Zahlentaste gedrückt wurde, dann Taste nicht zulassen:
    If Not IsNumeric(Chr$(KeyAscii)) Then
        KeyAscii = 0
    End If
End Sub
Es ist zwar im Grunde das gleiche, nur dass ich die IsNumeric-Funktion verwende und das Löschen der Eingabe in der TextBox auch zulasse.
 
Es ist zwar im Grunde das gleiche, nur dass ich die IsNumeric-Funktion verwende und das Löschen der Eingabe in der TextBox auch zulasse.
Das kannst du auch noch einfacher durch meine InStr(..)-Funktion lösen:

Code:
Private Sub Text1_KeyPress(KeyAscii As Integer)
   If InStr(1, "0123456789", Chr$(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
 ist dabei der Backspace-Charcode :)


mfG,
MAN
 
Grüße,

danke schon mal.

Nur das mit der ComboBox versteh ich nicht. Wie erkennt er dort drinnen welche Taste gedrückt werden soll?

Ach und wie Stoppe ich das ganze wieder?


Sers
Sliver
 
Wie erkennt er dort drinnen welche Taste gedrückt werden soll?
Wenn du die ComboBox mit den Ascii-Codes (von 0 bis 255) gefüllt hast, dann geht das eigentlich ganz einfach (sofern du es mit SendKeys() machen willst):
Code:
SendKeys Chr$(Combo1.Text)
Ach und wie Stoppe ich das ganze wieder?
Du rufst einfach den folgenden Befehl auf:
Code:
Timer1.Enabled = False
'oder auch
Timer1.Interval = 0

mfG,
MAN
 
Also im Moment stehen in der ComboBox die Zahlen 0 bis 255 und ich bin mir sicher das ich was falsch gemacht habe. ^^ Denn ich kann kein UPARROW finden.

So siehts bei mir aus:

Code:
Private Sub Combo1_Click()
    SendKeys UPARROW(Combo1.Text)
End Sub

Private Sub Combo1_DropDown()
    Dim UPARROW As Integer

    For UPARROW = 0 To 255
     Combo1.AddItem UPARROW
    Next UPARROW
End Sub

Private Sub Form_Load()
    Timer1.Interval = Text1.Text
End Sub


Private Sub stop_Click()
    Timer1.Enabled = False
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
   If InStr(1, "0123456789", Chr$(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Private Sub Timer1_Timer()
   Dim milliseconds As Long
   Dim keyPressed As Long
   
   milliseconds = Text1.Text
   keyPressed = Combo1.Text
End Sub
 
Was soll denn dein Programm eigentlich genau machen?
Beschreib mal ein bißchen genauer, was dein Programm machen soll und schick mir am besten das gesamte Projekt im Zip an cmaniac@gmx.de, vielleicht kann ich mir das dann besser vorstellen.

Vielen Dank!


mfG,
MAN
 
Habe dir das Projekt nun noch einmal verändert an deine Mail-Adresse geschickt.

mfG,
MAN
 
Habs mir schon angesehen und steige jetzt auch da hinter. ^^
Danke nochmals.

Nur wenn ich diese Sondercode eingeben für UP usw. bekom ich immer eine Error-Meldung...


Sers
Sliver
 
Zurück