社区
VFP
帖子详情
各位,有没有让窗体内各控件,跟着窗口按比例变得好办法?在线等
wanglei1981
2004-09-22 03:13:22
各位,有没有让窗体内各控件,跟着窗口按比例变得好办法?谢谢
...全文
106
5
打赏
收藏
各位,有没有让窗体内各控件,跟着窗口按比例变得好办法?在线等
各位,有没有让窗体内各控件,跟着窗口按比例变得好办法?谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wanglei1981
2004-09-22
打赏
举报
回复
谢谢两位,已经解决了
接分
十豆三
2004-09-22
打赏
举报
回复
你把以下代码写入你的Form的Init事件中
*********************************
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
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
IF TYPE(".FontSize") # "U"
&& IF 用于确保控件具有 FontSize 属性
.FontSize = .FontSize * ((.5 * lnWidthdiff) + (.5 * lnHeightdiff))
ENDIF
ENDWITH
ENDFOR
ENDIF
ThisForm.Refresh()
wanglei1981
2004-09-22
打赏
举报
回复
我想根据窗口大小来调节比例,应该怎么办?
十豆三
2004-09-22
打赏
举报
回复
如何创建一个根据屏幕分辩率自动调整的表单
概述
在一种分辩率下开发的屏幕在另一种分辩率下运行时, 可能与你期望的不同. 一种方案是开发不同分辩率下的多个不同的屏幕, 并在某一分辩率下运行相应的屏幕.
但是在 Visual FoxPro 中, 可以根据当前分辩率动态调整屏幕大小并重新安排对象. 本文用例子演示了如何这样做.
更多信息
逐步示例
在 640x480 分辩率下创建一个新表单. 添加一些文本框, 命令按钮和标签这样的控件到表单.
将以下代码放入表单的 Init 事件中和表单中的任何窗口任何容器对象(如页框中的页)的 Init 事件中:
** 假定屏幕是在 640x480 下创建的
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()
在表同分辩率下运行表单. 可以观察到它们的自动适应
JohnShen
2004-09-22
打赏
举报
回复
参见:
http://community.csdn.net/Expert/topic/3198/3198405.xml?temp=.4384424
请问如何使表单能够自动适应屏幕的分辨率?
“在创建
窗口
句柄之前,不能在
控件
上调用 Invoke 或 BeginInvoke“
本文深入探讨了在多线程环境下,
控件
调用Invoke或BeginInvoke时出现“在创建
窗口
句柄之前,不能在
控件
上调用Invoke或BeginInvoke”的错误原因及解决方案。文章通过实例分析,详细介绍了如何确保
窗口
句柄创建完毕后再进行
控件
调用,以及如何正确处理事件注册与注销,避免此类异常的发生。
【Winfrom-适配
窗体
】 WinForm
窗体
及其
控件
的自适应,
控件
随着
窗体
变化
本文介绍了一种在Winform应用程序中实现
控件
自适应
窗口
大小变化的方法。通过记录
控件
的初始位置和大小,并在
窗口
尺寸改变时按
比例
调整
控件
的位置和大小,使得
控件
能够随着
窗口
的变化而变化。
[VB.NET]在vb.net中
有没有
类似vb6
控件
数组的方法控制一组
控件
?
本文探讨了在VB.NET中如何使用
控件
数组简化多个同类
控件
的管理,特别是通过循环实现Label
控件
的批量赋值,介绍了创建
控件
数组并自动收集
窗体
内所有Label
控件
的方法。
在创建
窗口
句柄之前,不能在
控件
上调用 Invoke 或 BeginInvoke 解决
本文介绍在Windows
窗体
程序中使用多线程时遇到的“在创建
窗口
句柄之前,不能在
控件
上调用Invoke或BeginInvoke”错误及其解决方案。通过等待
窗口
句柄创建完毕的方法可以避免此问题。
Windows程序设计27:MFC
控件
指针及
控件
变量绑定
本文基于Windows程序设计26,介绍MFC
控件
指针及
控件
变量绑定。先讲解获取
控件
窗口
句柄的方法,包括随时取用和声明类成员变量指针在初始化函数中获取;接着阐述
控件
变量绑定,有绑定
控件
类型变量、值类型变量,还说明了值类型变量绑定后数据流向及UpdateData函数的使用。
VFP
2,749
社区成员
29,142
社区内容
发帖
与我相关
我的任务
VFP
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
复制链接
扫一扫
分享
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章