Archiv verlassen und diese Seite im Standarddesign anzeigen : Commandbuttons in VB mit Tastatur Tasten belegen ?
Guten Morgen roboternetz
Fahre im Moment mit meinem Roboter/Auto mit der Maus ... bzw den commandbuttons bei visual basic 6
würde aber gerne mit der tastatur beschleunigen
und wenn es noch möglich die lenkung mit der maus zu steuern
im vorhinein tausend dank
Johannes
21.06.2005, 12:43
Der einfachste Weg ist folgender. Du nimmst irgend eine leere Form und verwendest dort das KeyDown-Ereignis. Wenn die Form aktiviert ist und du Tasten drückst, wird dieses Ereignis aufgerufen. Dann musst du überprüfen, welche Taste gedrückt wurde und je nach dem bewegst du dann den Roboter. komplizierter wird es, wenn du auf der Form andere Steuerelemente hast. Dann erreicht das KeyDown-Ereignis nämlich nicht die Form sondern das Steuerelement, das gerade den Fokus hat.
Die Steuerung mit der Maus kannst du mit dem MouseMove-Ereignis machen.
Gruß
Johannes
Falls mehrere Steuerelemente da sind, kann man das auch so machen:
Private Sub Form_LostFocus()
Form1.SetFocus
End Sub
Gruß, Trabukh
commander7
21.06.2005, 21:21
hallo roll_.
ich habe dir ein Beispiel, wie ich das gemacht habe um auf meinem Form anstatt auf den Drucken Commandbutton zu klicken ich einfach nur noch Alt + D auf der Tastatur eingeben musste. Ich bin sicher du kannst das passend für dich umschreiben.
Private Sub cmdDrucken_KeyPress(KeyAscii As Integer)
Do
DoEvents
vbKeyAltD = Me.cmdDrucken
Loop
End Sub
gruss commander7
@Trabukh
Falls mehrere Steuerelemente da sind, kann man das auch so machen:
Code:Private Sub Form_LostFocus()
Form1.SetFocus
End Sub
Kann man die anderen Steuerelemente denn dann noch benutzen?
Ich stell es mir etwas schwierig vor, z.b. in eine Textfeld einen Text einzugeben oder einen Scrollbar zu bedienen, wenn dem Ding ständig der Focus entzogen wird. Sooo langsam ist VB doch bestimmt nicht ;-)
@recycle: Ja ne, ist klar! ;-) Aber das sollte ja auch nur die Idee dahinter aufzeigen, das ganze könnte man dann noch mehr oder weniger elegant mit einem Timer verknüpfen: Fokus verloren - Timer starten - Bei Ablauf von sagen wir mal einer 1/4 Sekunde wieder Fokus zurück... easy! :-D
Gruß, Trabukh
Johannes
22.06.2005, 13:56
Naja, die beste Methode ist es, jedes Key-Down-Ereignis aller Controls auf eine Prozedur umzulenken, falls es sich um die Steuertasten handelt. Dann kann man immernoch etwas in die Textbox schreiben oder mit der Tabtaste zwischen den Steuerelementen wechseln und diese dann mit Enter betätigen. Und dann ist es egal, wo der Fokus liegt, die Steuertasten werden immer erkannt.
Gruß
Johannes
lowlevel89
19.07.2006, 22:04
Es gäb noch ne mäglichkeit in der der Fokus egal ist:
Und zwar gibt es die Win32-API-Funktion "GetAsyncKeyState" mit der man jeder Zeit den Zustand einer Taste abfragen kann, man müsste dann im Hintergrund in einem extra Thread oder mit nem Timer immer die Tasten abfragen die in Frage kommen.
Deklaration:
Declare Function GetAsyncKeyState Lib "user32" ( _
ByVal vKey As Long) As Integer
Hier ein Beispiel: http://www.activevb.de/tipps/vb6tipps/tipp0070.html
mfG
LowLeveL
plusminus
20.07.2006, 00:16
Naja, die beste Methode ist es, jedes Key-Down-Ereignis aller Controls auf eine Prozedur umzulenken, falls es sich um die Steuertasten handelt.
Ob das die beste Lödung ist, wage ich zu bezweifeln...
Such dir doch ein Hotkey.ocx, das ein paar tasten überwacht, dann muss deine Form nichtmal aktiv/im vordergrudn sein.
Falls du solch ein OCX brauchst aber keines findest, sag grad, dann such ichs raus...
Hi,
schau dir mal die Beispiele auf meiner Seite an.
Da habe ich auch die Steuerung über Maus und Tastatur.
Eine Weiterentwicklung des Programmes ist dadurch besser möglich.
Bye Ulli
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.