设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 6058|回复: 8
打印 上一主题 下一主题

[窗体] 如何自动调整窗口适应当前窗体的大小

[复制链接]
跳转到指定楼层
1#
发表于 2012-9-11 13:12:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何自动调整窗口适应当前窗体的大小


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

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





有空时我再给出API示例

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
发表于 2012-9-11 15:00:30 | 只看该作者
movesize

点击这里给我发消息

3#
发表于 2012-9-11 16:16:23 | 只看该作者
    '调整窗体大小
    Form.InsideWidth =X
    Form.InsideHeight =Y
4#
 楼主| 发表于 2012-9-11 17:10:48 | 只看该作者
本帖最后由 lynnwang 于 2012-9-11 17:11 编辑

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

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

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

点击这里给我发消息

5#
发表于 2012-9-11 21:09:01 | 只看该作者
本帖最后由 t小宝 于 2012-9-11 21:09 编辑

不须api,access中有方法:
DoCmd.RunCommand acCmdSizeToFitForm
6#
 楼主| 发表于 2012-9-11 21:18:15 | 只看该作者
今天真的倒霉了,写了半天的示例和测试代码在吃晚饭前给毁了,后面附上坏的数据库
看有没有人能修复


目前找到三种方法
方法一:
记得,这是我入门时用到的笨方法,虽然很简单但很管用。说明:窗口不同于窗体(给我们新手的)
首先在启动窗体事件,我们获得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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
7#
 楼主| 发表于 2012-9-11 21:27:39 | 只看该作者
t小宝
你咋不早点出现呀,搞得我忙活了半天,方法还写三种,气人呀!{:soso_e116:}

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

坚持才是胜利呀

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

有了必杀技也要会用呀,不要像我这样子忙了半天,不过写的过程还是很享受的。{:soso_e142:}

点评

呵呵,研究一个问题的过程常会有其它意外收获的~  发表于 2012-9-11 21:33
8#
 楼主| 发表于 2012-9-11 21:40:00 | 只看该作者
为什么我的数据库会损坏。
还原现场:
环境:系统 WIN7X64+OFFICE2003 加虚拟机:VMware Workstation 7.15 + winxp + office 2003
为了最后外观调整测试看看效果,WIN7与XP下的窗口有什么不同
我两边都打开了同一数据库,刚开始一切还好,到最后在两边同时打开同一窗体运行,且又在同一窗体的模块中修改代码
结果悲剧又产生,所有模块及窗体对象不见了,只剩一数据表
(这个教训我已经第n次了,不过现在我写小的示例才会急着这么操作,真正的应用不敢这样子了)

自己在这里作个标记,也为大家提个醒。
9#
发表于 2012-9-13 21:37:57 | 只看该作者
都是高手啊,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-5 00:16 , Processed in 0.203620 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表