2017-12-18 2 views
0

Ich habe versucht, eine Art Sidebar-Menü zu erstellen, das sich einstellt, wenn Sie jetzt ziemlich lange auf eine Schaltfläche klicken, und aus irgendeinem Grund kann ich das nicht tun. Wenn ich den Code speichere und das zu testende Formular öffne, kann man das "Seitenmenü" (welches ein anderes Formular ist) sehen, anstatt außerhalb des Bereichs zu sein, den man sehen kann. Imgur preview.MS Access Form Sidebar Menü Animation

Die Liste der Formulare ist ziemlich unordentlich, aber die einzigen, die tatsächlich in der Frage verwendet werden, sind das "Menü" und "TestFormFormForm" (fragen Sie nicht nach dem Namen). Der Code, den ich verwende, ist wie folgt.

Option Compare Database 

Private Sub Command2_Click() 
    Dim x As Integer 
    x = 0 
    Do 
     DoEvents 
     Menu.Left = Menu.Left - 100 
     timeout (0.0075) 
     x = x + 1 
    Loop Until x = 50 
End Sub 

Private Sub Form_Load() 
    Me.ScrollBars = 0 
    Menu.Left = Me.Width + 1000 
    Menu.Move _ 
     Left:=Me.Width + 1000, Top:=500 
End Sub 

Sub timeout(duration_ms As Double) 
    Start_Time = Timer 
    Do 
    DoEvents 
    Loop Until (Timer - Start_Time) >= duration_ms 
End Sub 

Ich habe auch versucht, Me.WindowWidth = XYZ, bis ich erkannte, dass WindowWidth schreibgeschützt ist.

+0

Nicht klar für mich, was das Problem ist. Was meinst du mit "außerhalb der Gegend"? Ein Unterformular muss innerhalb der Dimensionen des Hauptformulars platziert werden. Was genau in deinem Code ist fehlgeschlagen? Was passiert - Fehlermeldung, falsche Ergebnisse, nichts? – June7

+0

Ich denke ein Video beschreibe es besser. Was ich versuche zu erreichen (ähnlich) https://imgur.com/a/sJeZ9 - Das ist das aktuelle Ergebnis https://youtu.be/e4cd0nX8Xqw – Superstar

Antwort

0

Folgende Arbeiten für mich:

  1. Satz Datenbankoption für Overlapping Windows-

  2. setzen das Hauptformular AutoResize Eigenschaft auf Nein und so bemessen, dass die rechte Kante Teil des rechten Randes des Unterformulars deckt zu berücksichtigen Raum vertikale Bildlaufleiste

  3. Satz Scrollbars-Eigenschaft weder

  4. stellen Sie die subform Breite so klein wie möglich und Visible-Eigenschaft auf No

  5. beseitigen Form Load-Ereignis

  6. Verwendung Toggle statt Befehlstaste

  7. Experiment (muss mindestens Breite seiner Kontrollen sein) mit verschiedenen Kombinationen von Konstanten in Code

überarbeitet Code:

Private Sub Toggle4_Click() 
    Dim x As Integer 
    Me.Menu.Visible = True 
    Do 
     DoEvents 
     Me.Menu.Width = Me.Menu.Width + IIf(Me.Toggle4, 200, -200) 
     Me.Menu.Left = Me.Menu.Left - IIf(Me.Toggle4, 200, -200) 
     Me.Toggle4.Left = Me.Toggle4.Left - IIf(Me.Toggle4, 200, -200) 
     timeout (0.01) 
     x = x + 1 
    Loop Until x = 10 
    Me.Menu.Visible = Me.Toggle4 
End Sub 
+0

Das ist sicherlich eine gute Idee und ein ziemlich netter Ansatz. Ist es jedoch normal, dass der Schalter blinkt, während das Menü geöffnet wird? – Superstar

+0

Kein Blinken hier. – June7

+0

Vielleicht liegt es daran, dass ich versuche, den Kippschalter zusammen mit dem Seitenmenü zu bewegen. [Vorschau] (https://youtu.be/sGPJu3Y-HGU) - Wenn Sie darauf achten, wird der Toggle ausgeblendet, wenn das Menü geschlossen wird und es blinkt, während die Animation abgespielt wird (blinkt, wie es sich anfühlt, ändert sich das Farbe zum Standard eins). – Superstar