Office中国论坛/Access中国论坛

标题: 如何自动调整窗口适应当前窗体的大小 [打印本页]

作者: lynnwang    时间: 2012-9-11 13:12
标题: 如何自动调整窗口适应当前窗体的大小
如何自动调整窗口适应当前窗体的大小


有没有简单的办法实现Form.AutoResize的效果:自动调整窗口适应当前窗体的大小
注:实在找不到ACCESS的方法,真不想用API解决

Form.AutoResize=True 仅仅能在打开窗体时,使窗口大小自适应
而我示例中,需要从数据表视图转换到窗体视图时,也要使窗口自适应窗体大小,不想边上留出很大部分空白区域


[attach]50355[/attach]


有空时我再给出API示例
作者: layaman_999    时间: 2012-9-11 15:00
movesize
作者: 鱼儿游游    时间: 2012-9-11 16:16
    '调整窗体大小
    Form.InsideWidth =X
    Form.InsideHeight =Y

作者: lynnwang    时间: 2012-9-11 17:10
本帖最后由 lynnwang 于 2012-9-11 17:11 编辑

上面两可能理解错了,是自适应。效果如果将窗体AutoResize属性设置为True
但它只管窗体加载时,依据FORM.WIDTH,3个节的SECTION.HEIGHT共计4项属性调整自适应窗口

我们现在要的效果是,如果打开窗体后,我们调整了窗口的大小之后,让窗口重新回到初始的自适应窗体的状态。
相当于你在窗体设计视图中双击标签控件使其边框自适应文字的效果(DoCmd.RunCommand acCmdSizeToFit)

已经确认ACCESS中无直接此方法,必须要曲线救国!

作者: t小宝    时间: 2012-9-11 21:09
本帖最后由 t小宝 于 2012-9-11 21:09 编辑

不须api,access中有方法:
DoCmd.RunCommand acCmdSizeToFitForm
作者: lynnwang    时间: 2012-9-11 21:18
今天真的倒霉了,写了半天的示例和测试代码在吃晚饭前给毁了,后面附上坏的数据库
看有没有人能修复
[attach]50367[/attach]

目前找到三种方法
方法一:
记得,这是我入门时用到的笨方法,虽然很简单但很管用。说明:窗口不同于窗体(给我们新手的)
首先在启动窗体事件,我们获得ACCESS中AUTORESIZE设置窗口的值
然后利用MOVESIZE方法,设置窗口大小
总结:1.代码简单易写,2.易懂
缺点:1.没有智能化,总是要先获得AUTORESIZE设置窗口的值,然后再设置
                        2.不能模块化


参考代码如下:

Option Explicit
Dim mlngAutosizeWidth As String
Dim mlngAutosizeHeight As String

'Purpose  : 自动尺寸调整      Author:Lynn_wang 2012-09-11
Private Sub Form_Load()
    If Me.AutoResize Then
        If Me.CurrentView = acCurViewDatasheet Then
            mlngAutosizeWidth = 5940
            mlngAutosizeHeight = 6045
'             If mlngAutosizeWidth Or mlngAutosizeWidth Then
'                 Err.Raise &H400400, "Form_Load", "数据表视图下,你必须先设置 mlngAutosizeWidth 和 mlngAutosizeHeight"
'             End If
        Else
             mlngAutosizeWidth = Me.WindowWidth
             mlngAutosizeHeight = Me.WindowHeight
        End If
    Else
        Err.Raise &H400400, "Form_Load", "此测试,窗体的 AutoResize 必须为真"
    End If
    Debug.Print Me.WindowWidth, Me.WindowHeight     '这里可获得窗体的 AutoResize 在窗体视图下设置的值
End Sub

'Purpose  : 切换视图      Author:Lynn_wang 2012-09-11
Private Function OpenWindows()
    If Me.NewRecord Then Exit Function
    If Me.CurrentView = acCurViewDatasheet Then
        DoCmd.RunCommand acCmdFormView
        DoCmd.MoveSize , , mlngAutosizeWidth, mlngAutosizeHeight  '重设尺寸
    Else
        DoCmd.RunCommand acCmdDatasheetView
    End If
End Function



作者: lynnwang    时间: 2012-9-11 21:27
t小宝
你咋不早点出现呀,搞得我忙活了半天,方法还写三种,气人呀!{:soso_e116:}

我用SIZE作为关键字搜索了整个F2(对象浏览器),
都试了到了 acCmdSizeToFit ,就它下面这个 acCmdSizeToFitForm没试

坚持才是胜利呀

附上我们新手宝典(必杀技)
http://www.accessruncommand.com/list/lista.htm

有了必杀技也要会用呀,不要像我这样子忙了半天,不过写的过程还是很享受的。{:soso_e142:}
作者: lynnwang    时间: 2012-9-11 21:40
为什么我的数据库会损坏。
还原现场:
环境:系统 WIN7X64+OFFICE2003 加虚拟机:VMware Workstation 7.15 + winxp + office 2003
为了最后外观调整测试看看效果,WIN7与XP下的窗口有什么不同
我两边都打开了同一数据库,刚开始一切还好,到最后在两边同时打开同一窗体运行,且又在同一窗体的模块中修改代码
结果悲剧又产生,所有模块及窗体对象不见了,只剩一数据表
(这个教训我已经第n次了,不过现在我写小的示例才会急着这么操作,真正的应用不敢这样子了)

自己在这里作个标记,也为大家提个醒。
作者: wufeng980114    时间: 2012-9-13 21:37
都是高手啊,学习了




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3