getch() in Visual Basic?

  • VB6

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von DHB.

    getch() in Visual Basic?

    HalloIch sags gleich vorweg, ich komme ursprünglich aus der C/QB-Ecke
    Ich suche in VB soetwas, wie in C die getch() Funktion funktioniert.
    Beispiel: Ich bin in einer FOR .. NEXT Schleife irgendwo in einem Event (zb. Form Load) und will 2 Tasten einlesen

    For i=0 to 1
    strZeichen = getch
    strText = strText + strZeichen
    next i

    wie heißt die Funktion, die in C getch() heißen würde?
    Hey Thomas,

    ich kann zwar kein 'C' und kenne die Funktion 'getch' auch nicht, nehme aber an, dass es GetChar bedeuten soll. Wenn dem so ist, kannst du die gedrückte Taste in VB durch folgende Ereignisproceduren der Form ermitteln:

    Visual Basic-Quellcode

    1. Private Sub Form_KeyPress(KeyAscii As Integer)
    2. Label1.Caption = Chr(KeyAscii)
    3. End Sub
    4. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    5. 'oder: Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    6. Label2.Caption = KeyCode
    7. End Sub


    Das KeyPress-Ereignis übergibt Dir den ASCII-Wert der gedrückten Taste, den Du dann ja mittels Chr() in das 'entsprechende Char' umwandeln kannst.

    Brauchst Du dagegen den Tastencode, dann kannst Du Dir diesen durch das KeyDown- oder das KeyUp-Ereignis übergeben lassen; der 2. Parameter zeigt Dir hier auch an, ob die Shift- oder/und die Steuerungstaste gedrückt wurde.

    Ich hoffe, dass dies Deine Frage beantwortet.
    mfG DHB

    Ich meine:
    :P Es sollten nur ernstzunehmende Beiträge eingestellt werden!
    :( Beiträge, die nur deren Anzahl in die Höhe treiben sollen, stehlen Lesern deren Zeit und schenken nur Frust.
    ;) Wenn ein Autor sein Thema für erledigt hält, sollte er dies kurz als letzten Eintrag vermerken.
    8) Leser wüssten dann, dass hier weitere Beiträge nicht mehr sinnvoll sind.
    Bei diesem keypress Ereignis wird das Programm aber nicht angehalten.


    Mein Ziel ist es, dass das Programm zu einer Stelle kommt, wo eine Taste gefragt wird, und der User muss dann eine drücken. Erst wenn sie gedrückt ist, läuft das Programm weiter

    Habs jetzt irgendwie geschafft, über eine zweite Dummy-Form
    Ist aber sicher nicht die eleganteste Lösung, mein Programmierlehrer hätte mir die Ohren langgezogen :D->
    http://rapidshare.com/files/135567003/Tastatureingabe.zip.html
    Geht das nicht irgendwie einfacher, ohne 2. Form?
    Hey Thomas,
    da gibt es verschiedene Möglichkeiten, um das 'KeyPress-Ereignis' für Deine Zwecke zu nutzen; z.B.:

    Visual Basic-Quellcode

    1. Private Key As Integer
    2. Private Sub Form_Load()
    3. ' ----- Kann schon in der Entwurfsphase eingestellt werden -----
    4. Me.KeyPreview = True ' Wichtig: Form soll KeyPress- empfangen!!!
    5. Command1.Caption = "Start waiting..."
    6. End Sub
    7. Private Sub Command1_Click()
    8. Call Wait
    9. End Sub
    10. Private Sub Form_KeyPress(KeyAscii As Integer)
    11. Key = KeyAscii
    12. End Sub
    13. Private Sub Wait()
    14. Command1.Caption = "I'm waiting - Press 'x'" ' Beiwerk
    15. While Key <> Asc("x")
    16. DoEvents ' Wichtig: Damit 'Key' empfangen und damit aktualisiert werden kann
    17. Wend
    18. Command1.Caption = "Start waiting..." ' Beiwerk
    19. End Sub

    Vieles ist hier nur Beiwerk zur Demo, aber das Prinzip sollte klar sein!
    mfG DHB

    Ich meine:
    :P Es sollten nur ernstzunehmende Beiträge eingestellt werden!
    :( Beiträge, die nur deren Anzahl in die Höhe treiben sollen, stehlen Lesern deren Zeit und schenken nur Frust.
    ;) Wenn ein Autor sein Thema für erledigt hält, sollte er dies kurz als letzten Eintrag vermerken.
    8) Leser wüssten dann, dass hier weitere Beiträge nicht mehr sinnvoll sind.