为Form中的控件增加自适应功能 转
创建一个基于Custom的类resizeable,并新建属性和方法程序,其说明如下:
a) 新建属性:
posiTyperList 可调整位置的控件类型列表
sizeTypeList 可调整大小的控件类型列表
acontrolStats[1,4]存放Form初始状态下所有控件的大小
initformHeight Form的初始高度
initformWidth Form的初始宽度
initResize 初次调整否
b) 新建方法程序:
procontrols 处理Form中所有控件位置和大小
savecontrols 保存Form中所有控件的大小和比例
setposition 重新设置控件位置
setsize 重新设置控件大小
具体实现的程序代码清单如下:
Procedure procontrols &&处理Form中所有控件位置和大小
IF This.InitResize &&是初次调整
This.InitResize=.F. &&设为非初次调整
ENDIF
Thisform.LockScreen=.T. &&禁止屏幕刷新
nPos=0 &&控件计数器
FOR m.i=1 TO Thisform.ControlCount &&遍历所有控件
oControl=Thisform.Controls[m.i]
nPos=nPos+1
If This.InitResize &&初次调整
This.Savecontrols(oControl) &&保存原Form中所有控件的大小比例
ENDIF
IF oControl.Class$This.posiTypeList &&控件是否为用户指定类型
This.SetPosition(oControl,nPos) &&设置控件位置
ENDIF
IF oControl.Class$This.SizeTypeList &&控件是否为用户指定类型
This.SetSize(oControl,nPos) &&设置控件大小
ENDIF
ENDFOR
Thisform.LockScreen=.F. &&允许屏幕刷新
Procedure savecontrols &&保存Form初始状态下所有控件的大小比例
Para oControl
nLen=ALEN(This.aControlStats,1)
This.aControlStats[nLen,1]=oControl.Height/This.InitFormHeight
This.aControlStats[nLen,2]=oControl.Width/This.InitFormWidth
This.aControlStats[nLen,3]=oControl.Top/This.InitlFormHeight
This.aControlStats[nLen,4]=oControl.Left/This.InitFormWidth
DIMENSION This.aControlStats[nLen+1,4]
Procedure setposition &&重新设置控件位置
Para oControl,nPos
oControl.Top=Thisform.Height*This.aControlStats[nPos,3]
oControl.Left=Thisform.Width*This.aControlStats[nPos,4]
Procedure setsize &&重新设置控件大小
Para oControl,nPos
oControl.Width=Thisform.Width*This.aControlStats[nPos,2]
IF !oControl.Baseclass $ "Textbox Spinner"
oControl.Height=Thisform.Height * This.aControlStats[nPos,1]
ENDIF
Procedure Init &&初始化
This.InitFormHeight=Thisform.Height
This.InitFormWidth=Thisform.Width
InitResize=.T.
2 实际应用
将resizeable类应用到Form中,需完成以下工作:
(1) Form中添加resizeable类对象,且向其Resize Event添加代码:
This.Resizable1.procontrols
(2) Form中resizeable1对象的posiTypeList和sizeTypeList分别输入属性值。posiTypeList指定了允许调整位置的控件类型,例如:
Commandbutton Combobox Checkbox Listbox Grid Textbox Label Shape Editbox Spinner
同样,sizeTypeList由用户指定允许调整大小的控件类型。posiTypeList值和sizeTypeList值可以不一致。
在Form运行状态下,当点击Form的最大/恢复按钮或拖动Form边框时,Form中所有控件会随窗口的变化自动改变大小。
与调整尺寸有关的Form属性有: ZoomBox 、Minheight、 MinWidth、MaxHeight 、MaxLeft 、MaxTop 、MaxWidth。若允许用户调整Form 尺寸必须设置 Form.ZoomBox=.F.。
用户可根据Form的页面布局,选定Form的高度和宽度的最值。
所设计的resizable类有以下特点:通用性强,适用于任何Form,程序不需作变动;封装性好,易于使用和维护;留有接口,允许用户自由选择调整位置和大小的控件类型。
为Form中的控件增加自适应功能 转的更多相关文章
- 给Webkit内核的浏览器控件增加互交功能
转载请说明出处,谢谢~~ 昨天封装了基于webkit的wke浏览器内核,做成了duilib的浏览器控件,实现了浏览功能,但是单单的浏览功能还不满足需求,在我的仿酷狗项目中乐库的功能需要与浏览器互交. ...
- 委托 在其他类中修改form中的控件属性
通常情况下,我们需要在其他业务类中将提示信息时时显示到主界面上,可以通过以下方式 Form1.cs using System; ; i < ; i++) { cb ...
- .net dataGridView当鼠标经过时当前行背景色变色;然后【给GridView增加单击行事件,并获取单击行的数据填充到页面中的控件中】
1.首先在前台dataGridview属性中增加onRowDataBound属性事件 2.然后在后台Observing_RowDataBound事件中增加代码 protected void Obser ...
- MFC的停靠窗口中插入对话框,在对话框中添加控件并做控件自适应
单文档程序添加了停靠窗口后,可能会在停靠窗口中添加一些控件.在这里我的做法是在对话框上添加控件并布局,然后将这个对话框插入到停靠窗口中. 步骤 1.插入对话框,在对话框中放入控件(我的为树形控件),并 ...
- C# Winform 界面中各控件随着窗口大小变化
在做一项工程中,由于不确定目标平台的分辨率,而正常使用要求铺满整个屏幕,所以界面中的各个控件必须能够适应窗口的变化. 首先想到的就是控件的百分比布局,但是再尝试写了几个控件的Location和Size ...
- 转:C# WinForm窗体及其控件的自适应
一.说明 2012-11-30 曾经写过 <C# WinForm窗体及其控件自适应各种屏幕分辨率> ,其中也讲解了控件自适应的原理.近期有网友说,装在panel里面的控件,没有效果? 这 ...
- [转载]ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值
原文地址:http://www.cnblogs.com/yxyht/archive/2013/03/02/2939883.html ASP.NET中TextBox控件设置ReadOnly=" ...
- 041. asp.net中内容页访问母版页中的控件
母版页运行机制: 用户通过输入内容也的URL来请求某个页面, 获取该页面后, 读取@Page指令, 如果该指令引用了一个母版页, 则也读取该母版页, 如果也是第一次请求这两个页面, 则母版页和被请求的 ...
- asp.net中Ajax控件的用途(二)
1.个人觉得对于新手最为实用的PopupControlExtender,弹出层载体,在实例中可以弹出登录框,百度的登陆页面基本都用的这种形式,可以把浮动的panel宽高都设置为100%,以屏蔽底层操作 ...
随机推荐
- 在WPF程序中将控件所呈现的内容保存成图像(转载)
在WPF程序中将控件所呈现的内容保存成图像 转自:http://www.cnblogs.com/TianFang/archive/2012/10/07/2714140.html 有的时候,我们需要将控 ...
- VIM编辑器常用功能整理笔记
vim编辑器 vi : visual Inertface 可视化接口 vim : vi improved 扩展版 语法着色 模式化编辑器: 编辑模式(命令模式): 默认模式 输入模式: 末行模式: 等 ...
- RAP开发入门-开发笔记
一.发布/运行 每次项目发布时需要在MANIFEST.MF->bulid中勾选依赖包.文件.代码等,避免报错 部署时项目可能会报一个baseline的错误,window->preferen ...
- arcgis中求多点到一条曲线的最短欧几里得距离
1.使用的工具:Arctoolbox----Analysis Tools----Proximity----Near工具. 2.注意:在求距离之前一定要先设置好坐标系统.
- windows 服务 安装 删除 启动 停止
一.停止 sc stop 服务名 二.删除 sc delete 服务名 注意:有时删除不了,报什么“服务为删除标识” ,请将服务窗口关掉就好了. 三.创建 sc create XmlcSendServ ...
- hdu 4941 Magical Forest
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4941 Magical Forest Description There is a forest can ...
- OpenStack: 安装准备
>安装准备1. 安装MySQL# apt-get install python-mysqldb mysql-server将/etc/mysql/my.cnf修改bind-address为&quo ...
- 15.Cyclone II的IO资源学习
IO资源 IO是与外界沟通和控制的通道,fpga提供了丰富的IO和一些实用的特性. 本文简要的将主要的特性摘录下来做设计参考用.具体参数参考handbook. 第一部分:IO特性概述 -----通过软 ...
- Protocol-RS-232/422/485标准
引: 通常的微处理器都集成有1路或多路硬件UART通道,可以非常方便地实现串行通讯.在工业控制.电力控制.智能仪表等领域中,也常常使用简便易用的串行通讯方式作为数据交换的手段. 但是,在工业控制等环境 ...
- PSP0表格二
一 项目计划日志 周活动总结表 姓名: 陆宇 日期:2015. 3. 21 日期 任务 听课 编写程序 阅读课本 准备考试 日总计/(min) 周日 60 30 90 周一 300 0 1 ...