一级棒(Eachfun)
一级棒 - 编程园地 - 源码放送 - VB窗口定位函数
RSS订阅
VB窗口定位函数
发表时间:2005-09-05 00:00:00 关键词:编程,源码,下载,VB

  这是好久以前写的了,我不碰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

本站特约顾问律师常州东晟律师事务所朱立律师(电话13915029670,QQ646146109)提醒您:
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
发表评论
称呼:
QQ:
邮箱:
链接:
内容:
搜索: 百度搜索 Google搜索
Copyright©2000 - 2008 Eachfun.Com, All Rights Reserved 一级棒网络
苏ICP备05080156号
一级棒建站系统 http://www.eachfun.com 一级棒版权所有,未经许可不得商用!