我想实现一效果:form1和form2,在form1上点击某个按钮,然后form2在form1的左侧或右侧缓缓弹出,就想小日本家中的推拉门一样
请问高手如何实现,谢谢?

解决方案 »

  1.   

    支持你,form2从form2内移动?旁边移动,能讲清楚点吗写
      

  2.   

    可以,事先将 Form2 放在Form1 后面被遮挡(注意要同时移动)。当点击按钮后,启动一个 Timer,用 Form2.Move 方法将其左移或右移。 直至到位,关闭 Timer。
      

  3.   

    是向旁边移动,不能用TIMER控件吧,因为我要求的效果是:form2看起来是被form1挡住一样,然后推动form2才逐渐出现的
      

  4.   

    使用TIMER控件,加窗体的MOVE方法
      

  5.   

    ===================form1
    Option ExplicitPrivate Sub Command1_Click()
        Form2.Show
        Form1.ZOrder 0
        Timer1.Enabled = True
    End SubPrivate Sub Timer1_Timer()
        Form2.Left = Form2.Left - 10
    End Sub
    =======================================form2
    Option ExplicitPrivate Sub Form_Load()
        Me.Left = Form1.Left
        Me.Top = Form1.Top
    End Sub
      

  6.   

    Private Sub Command1_Click()
        Form2.Left = Me.Left + Me.Width
        Form2.Top = Me.Top
        Form2.ShowWindow
    End Sub
    Private Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal dwtime As Long, ByVal dwFlags As Long) As Long
    Const AW_HOR_POSITIVE = &H1      ''从左到右打开窗口
    Const AW_HOR_NEGATIVE = &H2      ''从右到左打开窗口
    Const AW_VER_POSITIVE = &H4      ''从上到下打开窗口
    Const AW_VER_NEGATIVE = &H8      ''从下到上打开窗口
    Const AW_ACTIVATE = &H20000      ''在窗体通过本函数打开后,默认情况下会失去焦点,除非加上本常量
    Const AW_SLIDE = &H40000         ''看不出任何效果
    Const AW_BLEND = &H80000         ''淡入淡出效果
    Private Animatetime As Long
    Private FormWidth As Long
    Public Sub ShowWindow()
        AnimateWindow Me.hwnd, 1000, AW_HOR_POSITIVE Or AW_ACTIVATE
        Me.Cls
    End Sub
      

  7.   

    楼上的效果不错!!!但是,有一个问题存在:在动态过程中,窗体是"黑"的!我觉得,还是用上上一楼的方法好一点,最多加个DoEvents嘛.....