这是好久以前写的了,我不碰VB都已经有一年了,现将这函数拿出来共享!
Public Enum toumaoMFplaceData
'窗口位置常数,
'toumaoMoveForm过程用于将一个窗口移动到某个特定的位置,
'通常在窗口的load事件中调用toumaoMoveForm过程,
'在调用过程中用到的位置参数在此定义。
'程序设计by偷猫,http://www.eachfun.com/,QQ33751,toumao1@sohu.com
toumao0CenterMiddle = 0
toumao1CenterUp_1_3 = 1
toumao2CenterTop = 2
toumao3CenterDown_2_3 = 3
toumao4CenterBottom = 4
toumao5LeftUp = 5
toumao6LeftMiddle = 6
toumao7LeftBottom = 7
toumao8RightTop = 8
toumao9RightMiddle = 9
toumaoaRightBottom = 10
End Enum
Public Sub toumaoMoveForm(objForm As Form, _
Optional ByVal toumaoMFPlace As toumaoMFplaceData = toumao0CenterMiddle, _
Optional ByVal toumaoWidth As Long = -1, _
Optional ByVal toumaoHeight As Long = -1)
'将某一个窗体在屏幕上放置到适当的地方
'通常在窗体load的时候使用
'objForm是要移动的窗体,
'参数说明:
'toumaoMFPlace是将要移动的位置,其取值范围请见Public Enum toumaoMFplaceData
'toumaoWidth和toumaoHeight可以指定,如果不指定,则不改变窗口的大小
'程序设计by偷猫,http://www.eachfun.com/,QQ33751,toumao1@sohu.com
Dim tmWB As Boolean, tmHB As Boolean '标记窗口宽度、高度是否超过屏幕,如果是的话,要保证窗口的左侧和顶部被显示到屏幕外,
Dim tmWD As Long, tmHD As Long '记录窗口和屏幕在宽度和高度上的差值
'下面开始获取用户传递过来的参数,其中toumaoMFPlace的缺省值有效,可以直接使用,
'而最后四个参数的缺省值不能直接使用,须要转换
If toumaoWidth = -1 Then toumaoWidth = objForm.Width
If toumaoHeight = -1 Then toumaoHeight = objForm.Height
tmWD = Screen.Width - toumaoWidth '计算宽度差
tmHD = Screen.Height - toumaoHeight '计算高度差
Select Case toumaoMFPlace
Case 1
'toumaoCenterUp_1_3 = 1,表示水平居中,竖直居窗口上方1/3处。
objForm.Move tmWD \ 2, tmHD \ 3, toumaoWidth, toumaoHeight
Case 2
'toumaoCenterTop = 2,表示水平居中,竖直置顶
objForm.Move tmWD \ 2, 0, toumaoWidth, toumaoHeight
Case 3
'toumaoCenterDown_2_3 = 3,表示水平居中,竖直居窗口下方2/3处
objForm.Move tmWD \ 2, tmHD * 2 \ 3, toumaoWidth, toumaoHeight
Case 4
'toumaoCenterBottom = 4,表示水平居中,竖直居底
objForm.Move tmWD \ 2, tmHD, toumaoWidth, toumaoHeight
Case 5
'toumaoLeftUp = 5,表示水平居左,竖直居顶
objForm.Move 0, 0, toumaoWidth, toumaoHeight
Case 6
'toumaoLeftMiddle = 6,表示水平居左,竖直居中
objForm.Move 0, tmHD \ 2, toumaoWidth, toumaoHeight
Case 7
'toumaoLeftBottom = 7,表示水平居左,竖直居底
objForm.Move 0, tmHD, toumaoWidth, toumaoHeight
Case 8
'toumaoRightTop = 8,表示水平居右,竖直居顶
objForm.Move tmWD, 0, toumaoWidth, toumaoHeight
Case 9
'toumaoRightMiddle = 9,表示水平居右,竖直居中
objForm.Move tmWD, tmHD \ 2, toumaoWidth, toumaoHeight
Case 10
'toumaoRightBottom = 10,表示水平居右,竖直居底
objForm.Move tmWD, tmHD, toumaoWidth, toumaoHeight
Case Else
'toumaoCenterMiddle = 0或其它非法值,
'表示水平居中,竖直居中。此为默认值
objForm.Move tmWD \ 2, tmHD \ 2, toumaoWidth, toumaoHeight
End Select
tmWB = IIf(objForm.Width >= Screen.Width, True, False) '判断窗口的宽、高是否超过屏幕
tmHB = IIf(objForm.Height >= Screen.Height, True, False)
If tmWB And tmHB Then
'两都偏大
objForm.Move 0, 0
ElseIf tmWB And (Not tmHB) Then
'宽度偏大
objForm.Move 0
ElseIf (Not tmWB) And tmHB Then
'高度偏大
objForm.Move objForm.Left, 0
Else
End If
End Sub
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
