+ -
当前位置:首页 → 问答吧 → VB里窗体LEFT TOP 属性的疑问,搞的我焦头烂额。

VB里窗体LEFT TOP 属性的疑问,搞的我焦头烂额。

时间:2011-11-27

来源:互联网

我一直搞VB.NET的程序,最近工作需要就使用VB6开发一个小东西

  我新建一个EXE项目里面有一个FORM1窗体和一个form2窗体 ,当我点击form1里的一个按钮的时候让form2显示在按钮的地方。窗体的确是移动了但是移动的地方却不是我点击按钮的地方!
真是郁闷了。。。。奥我也设置了2个窗体的scaleMode=3 设置了为像素

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long '声明api函数
Private Type POINTAPI '声明数据类型
  mouse_x As Long
  mouse_y As Long
End Type

Private Sub Command1_Click()
  GetCursorPos z '获取坐标
  Form2.Left = z.mouse_x
  Form2.top = z.mouse_y
  Form2.show
End Sub
请各位帮助啊。。。。。
苍天啊。。。。。。


作者: hhay7758   发布时间: 2011-11-27

Private Sub Command1_Click()
  Form2.Left = left+command1.left
  Form2.top = top+command1.top+comamnd1.height
  Form2.show
End Sub

作者: worldy   发布时间: 2011-11-27

好像差点啊,我想显示在按钮的右下角呢?请高手

作者: hhay7758   发布时间: 2011-11-27

VB code
  Form2.Left = z.mouse_x*15
  Form2.top = z.mouse_y*15
  Form2.show


暂时先转为缇应付着……

作者: yiguangqiang88   发布时间: 2011-11-27

引用 2 楼 hhay7758 的回复:
好像差点啊,我想显示在按钮的右下角呢?请高手

VB code
Private Sub Command1_Click()
    Dim H As Single, W As Single, B As Single, CapH As Single
   '因为 VB 总是用缇为单位表示窗体的 Left, Top, Width, Height 属性
    '所以先将窗口工作区(内部宽度和高度)的单位转变为缇。这样,保证不论 ScaleMode 如何计算结果都是正确的。
    W = Me.ScaleX(Me.ScaleWidth, Me.ScaleMode, vbTwips)
    H = Me.ScaleY(Me.ScaleHeight, Me.ScaleMode, vbTwips)
    
    B = (Me.Width - W) / 2 '左右边框宽度:缇
    CapH = Me.Height - H - B '窗口标题栏高度 = 总高度 - 工作区高度 - 下边框高度
Form2.Show
Form2.Move Left + Command1.Left + Command1.Width, Top + Command1.Top + Command1.Height + CapH
End Sub

作者: yiguangqiang88   发布时间: 2011-11-27

Private Sub Command1_Click()
  Form2.Left = form1.left+command1.left+间距
  Form2.top = form1.top+command1.top+comamnd1.height+间距
  Form2.show
End Sub

作者: zfl2k   发布时间: 2011-11-28

热门下载

更多