设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] 怎样让窗体自适应不同分辨率的桌面?

[复制链接]
跳转到指定楼层
1#
发表于 2008-3-7 09:40:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用选行卡做了个窗体(窗体一打开就最大化),在不同分辨率的桌面时,窗体位置发生偏左偏右
大家是怎么解决的?

[ 本帖最后由 sunny-xie 于 2008-3-7 10:22 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2008-3-7 10:34:12 | 只看该作者
先将选卡根据窗体的Insidewindth  insideheight 来调整大小
在窗体的resize事件中
3#
 楼主| 发表于 2008-3-7 12:11:40 | 只看该作者

回复 2# 的帖子

查了资料,
Option   Explicit   
  Private   FormOldWidth   As   Long   
  '`保存窗体的原始宽度   
  Private   FormOldHeight   As   Long   
  '`保存窗体的原始高度   
   
  '`在调用ResizeForm前先调用本函数   
  Public   Sub   ResizeInit(FormName   As   Form)   
  Dim   Obj   As   Control   
  FormOldWidth   =   FormName.ScaleWidth   
  FormOldHeight   =   FormName.ScaleHeight   
  On   Error   Resume   Next   
  For   Each   Obj   In   FormName   
  Obj.Tag   =   Obj.Left   &   "   "   &   Obj.top   &   "   "   &   Obj.Width   &   "   "   &   Obj.Height   &   "   "   
  Next   Obj   
  On   Error   GoTo   0   
  End   Sub   
   
  '`按比例改变表单内各元件的大小,   
  '在调用ReSizeForm前先调用ReSizeInit函数   
  Public   Sub   ResizeForm(FormName   As   Form)   
  Dim   Pos(4)   As   Double   
  Dim   I   As   Long,   TempPos   As   Long,   StartPos   As   Long   
  Dim   Obj   As   Control   
  Dim   ScaleX   As   Double,   ScaleY   As   Double   
   
  ScaleX   =   FormName.ScaleWidth   /   FormOldWidth   
  '`保存窗体宽度缩放比例   
  ScaleY   =   FormName.ScaleHeight   /   FormOldHeight   
  '`保存窗体高度缩放比例   
  On   Error   Resume   Next   
  For   Each   Obj   In   FormName   
  StartPos   =   1   
  For   I   =   0   To   4   
  '`读取控件的原始位置与大小   
   
  TempPos   =   InStr(StartPos,   Obj.Tag,   "   ",   vbTextCompare)   
  If   TempPos   >   0   Then   
  Pos(I)   =   Mid(Obj.Tag,   StartPos,   TempPos   -   StartPos)   
  StartPos   =   TempPos   +   1   
  Else   
  Pos(I)   =   0   
  End   If   
  '`根据控件的原始位置及窗体改变大小的比例对控件重新定位与改变大小   
  Obj.Move   Pos(0)   *   ScaleX,   Pos(1)   *   ScaleY,   Pos(2)   *   ScaleX,   Pos(3)   *   ScaleY   
  Next   I   
  Next   Obj   
  On   Error   GoTo   0   
  End   Sub  

Private   Sub   Form_Load()   
  ResizeInit   Form1   
  End   Sub   
   
  Private   Sub   Form_Resize()   
  ResizeForm   Form1   
  End   Sub   


这里的Form1是指什么?提示ByRef参数类型不符

点击这里给我发消息

4#
发表于 2008-3-7 19:38:49 | 只看该作者
Form1 是你的当前需要适应大小的窗体对象
可以使用ResizeForm me
5#
发表于 2008-12-5 16:50:24 | 只看该作者

学习!!!

学习!!!
6#
发表于 2008-12-6 15:47:15 | 只看该作者
学习便受益
7#
发表于 2008-12-6 20:32:33 | 只看该作者
[:50] 学习窗体自适应
8#
发表于 2010-3-26 14:47:49 | 只看该作者
学习了不
9#
发表于 2010-3-26 15:20:27 | 只看该作者
谢谢啊
10#
发表于 2010-3-26 17:06:01 | 只看该作者
学习中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 05:37 , Processed in 0.093749 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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