gotFocus von Button

  • VB.NET
  • .NET (FX) 4.0

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Schamash.

    gotFocus von Button

    Hallo zusammen,

    ich möchte in Microsoft Access 2013 einen Button so programmieren, dass wenn man mit der Maus auf ihn fährt ( er also im Fokus der Maus ist) er sich in weitere Buttons unterteilt, bzw. ein Menü mit verschiedenen Links angezeigt wird.

    Das soll jedes mal passieren wenn ich mit der Maus drauf fahre und wenn ich ihn wieder verlasse soll es wieder der ursprüngliche Button sein.
    Ähnlich wie das bei Dropdownmenüs auf Webseiten passiert.

    Ich nutze Access 2013 und weiß leider nicht genau welche Vb Version damit verbunden ist oder wo ich dies nachgucken kann.

    Vielen Dank für eure Hilfe
    Gruß
    Philipp
    Für die Umsetzung gibt es sicherlich einige Möglichkeiten,

    ich würde alle Buttons erstellen und die 'Unterpunkte' invisible setzen.
    Bei deinem OnHover bzw. MouseEnter Event würde ich dann die unterliegenden Buttons sichtbar machen und mit kleiner Verzögerung die Position verändern (=Slide-Effekt).

    und wenn du wieder den Button verlässt MouseLeave -> dann machst du das alles umgekehrt, sprich buttons Position zurück, dann invisible, fertig.


    Hier mal ein Bsp. in Excel, zwar ohne hover, aber wenn du die Subs nacheinander startest, siehst du was ich meine. -> bei zweitem starten von dropdown wird es wieder zurückgefahren.


    Visual Basic-Quellcode

    1. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    2. Private val As Boolean
    3. Sub createButtons()
    4. val = True
    5. Dim btn As Button
    6. ActiveSheet.Buttons.Delete
    7. Dim t As Range
    8. For i = 2 To 6 Step 2
    9. Set btn = ActiveSheet.Buttons.Add(100, 100, 200, 30)
    10. With btn
    11. .Caption = "Btn " & i
    12. .Name = "Btn" & i
    13. If i = 2 Then
    14. .OnAction = "btns"
    15. End If
    16. End With
    17. Next i
    18. ActiveSheet.Buttons("btn2").BringToFront
    19. End Sub
    20. Sub dropdown()
    21. Dim Top As Integer
    22. Dim btn As Button
    23. If val = True Then
    24. For i = 1 To 3 Step 1
    25. Top = 45 * (i - 1)
    26. Set btn = ActiveSheet.Buttons("btn" & (i * 2))
    27. For y = 1 To Top
    28. btn.Top = btn.Top + 1
    29. DoEvents
    30. Sleep 3
    31. Next
    32. Next
    33. val = False
    34. Else
    35. For i = 3 To 1 Step -1
    36. Top = 45 * (i - 1)
    37. Set btn = ActiveSheet.Buttons("btn" & (i * 2))
    38. For y = 1 To Top
    39. btn.Top = btn.Top - 1
    40. DoEvents
    41. Sleep 3
    42. Next
    43. Next
    44. val = True
    45. End If
    46. End Sub
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Willkommen im Forum. :thumbup:

    pmeller schrieb:

    er sich in weitere Buttons unterteilt, bzw. ein Menü mit verschiedenen Links angezeigt wird.
    Ja was denn nun? Buttons halte ich für suboptimal.
    Soll das, was da angezeigt wird, funktional oder nur Show sein?
    Ich empfehle mal ein ContextMenuStrip, allerdings wird das per Default mit dem rechten Mausklick aktiv, Du kannst es aber auch per MouseHover aktivieren:

    VB.NET-Quellcode

    1. Private Sub Button1_MouseHover(sender As Object, e As EventArgs) Handles Button1.MouseHover
    2. Me.ContextMenuStrip1.Show(Button1, New Point(20, 20))
    3. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    pmeller schrieb:

    Aber funktioniert das auch in Access?
    VB.NET, Framework 4.0 war die Vorgabe.
    VBA oder so: K.A.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @pmeller Beschjreib mal etwas detaillierter, was mit welcher Version / welchem Programm Du machen willst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @pmeller Soweit mit bekannt ist kann das gezeigt Beispiel von RodFromGermany mit VBA nicht realisiert werden.

    Es gibt ein GotFocus das ist aber nur wenn der Button tatsächlich per Tab oder Mausklick den Focus erhält.
    in VB.net kann man mit Mouseover oder ähnlichem dein Problem lösen.

    Wenn du also nur mit Access arbeiten möchtest und kein Zusätzliches VB.net Progamm dazu packen möchtest/kannst hast du "Pech".
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."