Office中国论坛/Access中国论坛

标题: 怎样让窗体自适应不同分辨率的桌面? [打印本页]

作者: sunny-xie    时间: 2008-3-7 09:40
标题: 怎样让窗体自适应不同分辨率的桌面?
用选行卡做了个窗体(窗体一打开就最大化),在不同分辨率的桌面时,窗体位置发生偏左偏右
大家是怎么解决的?

[ 本帖最后由 sunny-xie 于 2008-3-7 10:22 编辑 ]
作者: tmtony    时间: 2008-3-7 10:34
先将选卡根据窗体的Insidewindth  insideheight 来调整大小
在窗体的resize事件中
作者: sunny-xie    时间: 2008-3-7 12:11
标题: 回复 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参数类型不符
作者: tmtony    时间: 2008-3-7 19:38
Form1 是你的当前需要适应大小的窗体对象
可以使用ResizeForm me
作者: bpchan    时间: 2008-12-5 16:50
标题: 学习!!!
学习!!!
作者: changweiren    时间: 2008-12-6 15:47
学习便受益
作者: nxjswt    时间: 2008-12-6 20:32
[:50] 学习窗体自适应
作者: cp_dl    时间: 2010-3-26 14:47
学习了不
作者: cp_dl    时间: 2010-3-26 15:20
谢谢啊
作者: michael100    时间: 2010-3-26 17:06
学习中




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