| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: mit Return zwischen Textboxen wechseln (2907 mal gelesen)
|
Martin L Mitglied Maschinenbauingenieur
 
 Beiträge: 266 Registriert: 19.02.2002
|
erstellt am: 15. Okt. 2004 11:37 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute, ich versuche gerade die ersten Hürden der VB-Programmierung zu bezwingen und habe folgendes Problem: In einer Eingabemaske sind mehrer Textboxen, welche über den TabIndex wunderbar in einer sinnvollen Reihenfolge angesteuert werden können. Leider wollen mehrere Kollegen mit Hilfe der Return-Taste in das nächste Eingabefeld wechseln. Frage: Ist es möglich, dass ich z.B. mit der KeyAsci die Return-Taste abfrage und dann automatisch zum nächsten TabIndex springe? Gruss Martin
------------------ SE V15-SP4; keine Zusatzmodule P4 3,0GHz; 1024MB; nVidia quadro 4 980xgl; Win2000 SP3 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Mitglied Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 15. Okt. 2004 12:37 <-- editieren / zitieren --> Unities abgeben:          Nur für Martin L
|
Martin L Mitglied Maschinenbauingenieur
 
 Beiträge: 266 Registriert: 19.02.2002
|
erstellt am: 15. Okt. 2004 13:28 <-- editieren / zitieren --> Unities abgeben:         
Hallo Nancy, wenn ich mein VB-Programm starte und den ersten Eingabewert mit Return bestätige erhalte ich nur ein System-Beep und der Cursor ist immer noch im alten Feld. Erst mit TAB (oder natürlich Maus) gelange ich ins nächste Feld. Habe ich vielleicht irgendwelche Grundeinstellungen nicht? Gruss Martin ------------------ SE V15-SP4; keine Zusatzmodule P4 3,0GHz; 1024MB; nVidia quadro 4 980xgl; Win2000 SP3 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Mitglied Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 15. Okt. 2004 14:10 <-- editieren / zitieren --> Unities abgeben:          Nur für Martin L
|
pablo Mitglied Techniker
 
 Beiträge: 453 Registriert: 23.01.2002
|
erstellt am: 15. Okt. 2004 15:34 <-- editieren / zitieren --> Unities abgeben:          Nur für Martin L
|
startrek Mitglied Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 15. Okt. 2004 16:15 <-- editieren / zitieren --> Unities abgeben:          Nur für Martin L
|
Martin L Mitglied Maschinenbauingenieur
 
 Beiträge: 266 Registriert: 19.02.2002
|
erstellt am: 15. Okt. 2004 17:44 <-- editieren / zitieren --> Unities abgeben:         
Hallo Pablo, Dein Beispiel konnte ich nachvollziehen; leider komme ich damit bei meinem Progrämmchen nicht weiter. Ich habe mehrer Berechnungsformulare entworfen, auf denen so um die 10 Eingabefelder sind (die Eingabefelder sind keine Steuerelemente). Wenn ich Dein Beispiel richtig verstanden habe, muss ich nun für jedes Eingabefeld festlegen, was bei der gedrückten Return-Taste passieren soll; das ist schon eine Menge arbeit(und ich habe die Textfelder auch noch sprechend benannt). Ich spreche mal so als Anfänger frei raus, wie ich mir das vorstelle: - der Cursor befindet sich im Eingabefeld, TabIndex z.B. 6 - der Anwender gibt einen Wert ein und drückt Return Nun möchte ich in VB folgendes abbilden: - das Programm weiss, dass das aktive Eingabefeld TabIndex 6 hat - das Programm soll nun, da Return gedrückt, zum nächsten TabIndex Gehe ich da zu blauäugig ran oder gibt es da eine einfache Lösung? ------------------ SE V15-SP4; keine Zusatzmodule P4 3,0GHz; 1024MB; nVidia quadro 4 980xgl; Win2000 SP3 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
 
 Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2020
|
erstellt am: 15. Okt. 2004 18:31 <-- editieren / zitieren --> Unities abgeben:          Nur für Martin L
Nancy, bei jedem neuen Enter-Hieb macht meine Textbox leise Beep MartinL, geht auch: Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then GetNextControl (Me.ActiveControl.TabIndex + 1) End If End Sub Private Sub Form_Load() Me.KeyPreview = True End Sub Public Sub GetNextControl(ByVal TabIndex As Long) Dim mC As VB.Control For Each mC In Me.Controls If mC.TabIndex = TabIndex Then mC.SetFocus Exit For End If Next End Sub lg pablo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin L Mitglied Maschinenbauingenieur
 
 Beiträge: 266 Registriert: 19.02.2002
|
erstellt am: 16. Okt. 2004 07:33 <-- editieren / zitieren --> Unities abgeben:         
Hi Pablo, es ist zum Haareraufen. Ich habe Deinen Code sofort ausprobiert und nach dem ersten Return springt der Cursor direkt in das nächste Eingabefeld. Doch danach tut sich nichts mehr, ... Laufzeitfehler '438', Objekt unterstützt diese Methode oder Eigenschaft nicht. Was hat das denn nun wieder zu bedeuten? Ein schönes Wochenende wünscht Euch Martin ------------------ SE V15-SP4; keine Zusatzmodule P4 3,0GHz; 1024MB; nVidia quadro 4 980xgl; Win2000 SP3 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
 
 Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2020
|
erstellt am: 16. Okt. 2004 13:29 <-- editieren / zitieren --> Unities abgeben:          Nur für Martin L
|
cka71 Mitglied
 Beiträge: 2 Registriert: 18.10.2004
|
erstellt am: 18. Okt. 2004 10:30 <-- editieren / zitieren --> Unities abgeben:          Nur für Martin L
Wenn du die Funktion GetNextControl(ByVal TabIndex As Long) von Pablo noch folgendermaßen erweiterst, sollte das für Textfelder funktionieren (ist für andere Komponenten entsprechend erweiterbar). Dim mC As VB.Control For Each mC In Me.Controls If TypeOf mC Is TextBox Then ' --> Ergänzung. If mC.TabIndex = TabIndex Then mC.SetFocus Exit For End If End If ' --> Ergänzung. Next Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |