Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
428to432
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
428to432
428to432
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

fkeys an userform

fkeys an userform
22.05.2004 19:10:18
markus
Hallo Leute.
ALso ich probiers nochmal: Untenstehender Code wird ausgefuehrt solange die Userform leer ist. Sobald sich ein oder mehere Buttons darauf befinden funktioniert dies schon nicht mehr, denn der jeweilige Knopf/Control hat den Fokus. Da ich viele Buttons auf meinen Forms habe, muesste ich wohl fuer jeden Keydown Event von jedem Control diese Sub implementieren? Wohl eher nicht oder, aber ich hab den Bogen echt nicht raus.
-> Egal wo sich der Fokus auf der Form befindet, soll der jeweilige Form_KeyDownevent ankommen...


Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyF5 Then
KeyCode = 0
MsgBox "taste f5 wuerde gedrueckt"
Else
MsgBox "irgendwas wurde gedrueckt"
End If
End Sub

Danke fuer eure Hilfe,
Markus

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: fkeys an userform
22.05.2004 19:46:03
andre
Hallo Markus,
das geht nicht, siehe auch die Hilfe: Das Formular oder Steuerelement mit dem Fokus empfängt alle Tastenanschläge. Ein Formular kann den Fokus nur erhalten, wenn es keine Steuerelemente enthält oder alle sichtbaren Steuerelemente deaktiviert sind.
Einen Tip gibt ActiveVB. http://www.activevb.de/tipps/vb6tipps/tipp0070.html
Das Modul Timer1_Timer müsstest Du mit Application.OnTime versuchen zu realisieren. Wenn es denn funktioniert wird es aber wahrscheinlich auch Ressourcen kosten, denn Du müsstest ja in kurzen Abständen abfragen. Die Funktionstastenabfrage steckt hier: For X = 112 To 127
If CompKey(X, "F" & CStr(X - 111)) Then Exit Sub
Next X
Userbild

Hoffe geholfen zu haben

Grüße aus Gera



Anzeige
AW: fkeys an userform
22.05.2004 20:10:51
markus
Hallo Andre,
Danke erstmal. ist ja echt muehsam. Meine Applikation soll mit einer Fernsteuerung bedient werden. Wie ist das denn moeglich ausser jedem control die selben aufrufe zuzuweisen, vielleicht noch 'ne andre idee?
Danke Markus
AW: fkeys an userform
22.05.2004 20:19:10
andre
Hallo Markus,
eigentlich nicht. Manchmal hiolft nur Fleißarbeit. Mach aber nur einen Dreizeiler draus - die eigentliche Funktion packe in eine Function ;-)

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
WasIstLos KeyCode, Shift
End Sub


Private Function WasIstLos(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyF5 Then
KeyCode = 0
MsgBox "taste f5 wuerde gedrueckt"
Else
MsgBox "irgendwas wurde gedrueckt"
End If
End Function

(ungetestet)
Userbild

Hoffe geholfen zu haben

Grüße aus Gera



Anzeige
AW: fkeys an userform
22.05.2004 21:01:58
Thomas Risi
Hallo Markus
Versuch's mal in etwa so ;-)
In ein Klassenmodul (Name = 'cUFC')


Option Explicit
Private WithEvents As MSForms.CommandButton
Private WithEvents As MSForms.TextBox
Public Function Create(c As MSForms.Control) As Object
    
    Set Create = Nothing
    
    If TypeOf Is MSForms.CommandButton Then
        Set b = c
        Set Create = Me
    ElseIf TypeOf Is MSForms.TextBox Then
        Set t = c
        Set Create = Me
    End If
    
End Function
Private Sub b_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = vbKeyF5 Then
        KeyCode = 0
        MsgBox "taste f5 wuerde gedrueckt"
    Else
        MsgBox "irgendwas wurde gedrueckt"
    End If
End Sub
Private Sub t_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = vbKeyF5 Then
        KeyCode = 0
        MsgBox "taste f5 wuerde gedrueckt"
    Else
        MsgBox "irgendwas wurde gedrueckt"
    End If
End Sub



Dann im 'Activate'-Event Deiner UserForm ...


Option Explicit
Dim UFControls() As cUFC
Private Sub UserForm_Initialize()
    
    Dim item As MSForms.Control
    Dim n%: n = -1
    
    For Each item In Me.Controls
        
        n = n + 1
        
        ReDim Preserve UFControls(n)
        
        Set UFControls(n) = New cUFC
        
        UFControls(n).Create item
        
    Next
    
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5


Gruß
Thomas
Risi Thomas Softwareentwicklung
Anzeige
AW: fkeys an userform
22.05.2004 22:45:46
Nepumuk
Hallo Thomas,
interessante Variante, aber was zum Teufel hat es mit "Set Create = Me" auf sich? Me ist doch in dem Fall die Klasse cUFC. Liegt es daran, dass du mit UFControls(n) die Klasse jedes mal neu (New cUFC) reverenzierst ? Geht da die vorherige Reverenz nicht zu Bruch?
Gruß
Nepumuk
Kommando zurück!!
22.05.2004 22:52:37
Nepumuk
Hallo Thomas,
nach einem kräftigen Schluck Bier und einer Zigarette kam die Erleuchtung. Ausgefuchst, muss ich schon sagen!
Gruß
Nepumuk
AW: fkeys an userform
23.05.2004 10:22:24
markus
Hey danke,
Clevere Sache Thomas, aber i hab mi nun fuer die wahrscheinlich naheliegendste mit den Accelerator keys entschieden. Kein AUfwand und funktioniert 1A.
Markus
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige