
公告 |
四川理工学院信息管理与信息系统专业学生,男,83年5月生。
职业:自由开发者
为人座右铭:做人要厚道
QQ:61951565
VFP群:4001858(已满员),17966472
E-mail:lugreen@163.com
QQ空间:Greeeeeeeeeeeeeen
本博客文章未经作者同意不得转载 |
Blog信息 |
blog名称:Green1Vfp 原创空间 日志总数:35 评论数量:101 留言数量:3 访问次数:443323 建立时间:2004年12月7日 |

| |
[用户接口]根据显示器分辨率自动调整表单及控件的大小,使软件界面大小与设计时的比例保持一致 网上资源, 软件技术
Green1 发表于 2006/3/18 16:05:35 VFP QQ群:4001858 VFP UC团体:4363524 欢迎您的加入 |
有时我们会遇到这样的情况,在1024*768分辨率分设计的程序在800*600的分辨率下运行时窗口界面会变得很不协调
使用下面的代码可以解决这一问题
LOCAL lnHeight, lnWidth, lnHeightdiff, lnWidthdiff lnHeight = 480 && 原分辩率下的控件高度 lnWidth = 640 && 原分辩率下的控件宽度 lnHeightdiff = 0 && 保存不同高度的变量 lnWidthdiff = 0 && 保存不同宽度的变量 IF SYSMETRIC(2) <> lnHeight && 如果目前不是运行于 640x480 分辩率下 lnHeightDiff = SYSMETRIC(2) / lnHeight lnWidthDiff = SYSMETRIC(1) / lnWidth ** 如果是在容器对象(如页框中的页等非表单且具有 ControlsCount 属性的容器)的 Init 事件中, 你需要注 ** 释掉以下代码直到 ENDIF 代码行. This.Height = This.Height * lnHeightDiff This.Width = This.Width * lnWidthDiff This.Top = This.Top * lnHeightDiff This.Left = This.Left * lnHeightDiff ** 遍历各对象, 重新调整和安排它们. FOR I = 1 TO This.ControlCount WITH This.Controls(i) .Height = .Height * lnHeightdiff .Width = .Width * lnWidthdiff .Top = .Top * lnHeightdiff .Left = .Left * lnWidthdiff ** 你也可以在这里修改 FontSize 属性来重调字体 ** IF TYPE(".FontSize") # "U" ** && IF 用于确保控件具有 FontSize 属性 ** .FontSize = .FontSize * ((.5 * lnWidthdiff) + (.5 * lnHeightdiff)) ** ENDIF ** 但是, 一些较高的屏幕分辩率会适当地修改字体外观, 因此在试以上代码前应进行测试. ENDWITH ENDFOR ENDIF ThisForm.Refresh() |
|
回复:根据显示器分辨率自动调整表单及控件的大小,使软件界面大小与设计时的比例保持一致 网上资源, 软件技术
在线计算器(游客)发表评论于2011/8/20 11:06:16 VFP QQ群:4001858 VFP UC团体:4363524 欢迎您的加入 |
|
» 1 »
|