vfp ole 锚点问题

zizai0714 2011-08-29 04:24:28
最近在玩最大化和最最小化,用锚点的时候发现,ole控件根本就不受控制……,一直呆在原位置,请问如何才能控制ole控件呢
...全文
103 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zizai0714 2011-09-02
  • 打赏
  • 举报
回复
锚点还是很好玩啊!但是list就不爽了
zizai0714 2011-09-02
  • 打赏
  • 举报
回复
OLE控件设置绝对值的时候有问题,但是相对值,又可以。
十豆三 2011-08-29
  • 打赏
  • 举报
回复
因为 ole 控件没有 Anchor 属性。

在表单的 ReSize 事件对控件计算后代码调节,

例如:以下例子请参考
*-- 在表单中新建一个方法forminit,代码如下:
*-- 注释: _DesignWidth 和 _DesignHeight 是人为设定的程序运行的默认窗口大小
_DesignHeight = 480 && 默认为 480,可以根据情况修改为600或768
_DesignWidth = 640 && 默认为 640,可以根据情况修改为800或1024
If Sysmetric(1)<>_DesignWidth

nHeightFactor = Sysmetric(2) / _DesignHeight
nWidthFactor = Sysmetric(1) / _DesignWidth

With This
*-- 重新调整表单的大小和位置
nNewWidth = .Width * nWidthFactor
nNewHeight = .Height * nHeightFactor
If .AutoCenter = .T.
nNewWidth = .Width * nWidthFactor
nNewHeight = .Height * nHeightFactor
.Left = .Left - (nNewWidth - .Width)/2
.Top = .Top - (nNewHeight - .Height)/2
.Width = nNewWidth
.Height = nNewHeight
Else
.Left = .Left * nWidthFactor
.Top = .Top * nHeightFactor
.Width = nNewWidth
.Height = nNewHeight
Endif
*-- 重新调整表单上的控件的大小和位置
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 事件写上 Thisform.Forminit就可以了。

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧