首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

遇到一个超级简单的有关问题,但,小弟我没搞定

2012-04-27 
遇到一个超级简单的问题,但,我没搞定遇到一个超级简单的问题,但,我没搞定表单是有一个容器控件 Container1

遇到一个超级简单的问题,但,我没搞定
遇到一个超级简单的问题,但,我没搞定

表单是有一个容器控件 Container1 ,我想让运行时表单最大化,同时实现以下效果: 
with thisform.Container1
  .top = 0
  .left = 0
  .width = thisform.width
  .height = thisform.height
endwith

于是,我在表单的init和Resize事件中写下:
with thisform.Container1
  .top = 0
  .left = 0
  .width = thisform.width
  .height = thisform.height
endwith

运行结果:
  运行初期表单最大化,Container1.top = 0,Container1.left = 0,Container1的宽度和高度为设计时的值。
如果改变表单大小,我要的效果便实现了。

自己探究的结果:
  在表单的init事件中检查表单的宽度,发现刚运行时,表单虽然是最大化状态,但其宽度值依然是设计时的值,难怪Container1的宽度高度没有变化。

请问各位:我要怎样才能实现我要的效果,即表单一运行就最大化,里面的Container1控件和表单一样大小。

[解决办法]
*-- 函数 sysmetric(n)
*-- 参数含义及返回值
* 1 当前屏幕宽度
* 2 当前屏幕高度  
*-- 如果当前屏幕的宽度不是预先在设计模式下设定的宽度,则进行对表单上控件的自动调整
*-- 注释: _DesignWidth 和 _DesignHeight 是人为设定的程序运行的默认窗口大小 
IF SYSMETRIC(1) <> This._DesignWidth 
#DEFINE nHeightFactor SYSMETRIC(2) / This._DesignHeight && 默认为 480
#DEFINE nWidthFactor SYSMETRIC(1) / This._DesignWidth && 默认为 640 
WITH THIS
*-- 重新调整表单的大小和位置
.Width = .Width * nWidthFactor
.Height = .Height * nHeightFactor
.Left = .Left * nWidthFactor
.Top = .Top * nHeightFactor 
*-- 重新调整表单上的控件的大小和位置
FOR nControlLoop = 1 TO .ControlCount
.Controls[nControlLoop].Width = .Controls[nControlLoop].Width * nWidthFactor
.Controls[nControlLoop].Height = .Controls[nControlLoop].Height * nHeightFactor
.Controls[nControlLoop].Left = .Controls[nControlLoop].Left * nWidthFactor
.Controls[nControlLoop].Top = .Controls[nControlLoop].Top * nHeightFactor 
*-- 调整控件字体大小
IF PEMSTATUS(.Controls[nControlLoop],"FontSize",5)
.Controls[nControlLoop].FontSize = INT(.Controls[nControlLoop].FontSize * nHeightFactor)
ENDIF 
ENDFOR
ENDWITH
ENDIF

将上述代码放在表单的INIT事件是有用的,若将This._DesignWidth改为640,将This._DesignHeight改为480,设AUTOCENTER=.f.效果非常明显



[解决办法]
简单一点的方法

添加一个容器控件

把容器控件拖放到和表单一样大小

然后设置容易控件的Anchor属性值为 15

运行

OK

[解决办法]
为什么thisform.width还是设计时的值呢?

因为你的语句是写在resize中的

指定WindowState的属性值并初始运行的时候,并没有激发resize事件

所以容器的Height,Width 还是设计时的大小

但表单的Height,Width 已经发生了变化了

热点排行