说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

运行时改变控件大小的两种方法-VB资料

HTML文档下载 WORD文档下载 PDF文档下载
运行时改变控件大小的两种方法-VB资料


广东石碣源兴电脑 李法龙
  通常我们在设计应用程序时可以任意改变控件的大小( 除去象Timer这样的运行时不可显示的控件), 以使其满足我们的实际需要,使界面友好而且美观大方。但有些时候,我们为了方便用户,需要提供在运行时刻能够改变控件大小的功能,使用户能够根据程序显示,输出的需要通过鼠标的拖放改变控件的大小,从而方便用户的阅读浏览等。本文就此向诸位介绍两种方法来达到此目的。

  我们知道,运行时刻可见的控件都具有 Top, Left, Height, Width 等属性,用以定位其在窗体上的位置及大小,在运行时刻改变控件大小的原理也基于此。通过鼠标的拖放等操作,动态改变控件的Top, Left, Bottom, Height 属性值,从而定制控件的大小,甚至拖动整个控件。

  第一种方法需要 Win32 API 函数。所用到的 API 函数有:

Declare Function ScreenToClient Lib "user32"(ByVal hwnd As Long, lpPoint As POINTAPI) As Long
  获得鼠标的屏幕坐标放在lpPoint 中。

Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  将屏幕坐标转化成客户区坐标系统的坐标,转换后的坐标仍在 lpPoint 中。

  新开一个工程,在 Form1 上放一个 TextBox 控件,命名为 Text1。在 Form 的 MouseMove 事件中捕获鼠标坐标,如果鼠标的位置与 Text1 的边界相距很近(比如说50 Twips,150 效果比较好),根据需要将 Form1 的MousePointer 属性值为 vbSizeNS (垂直尺寸线),或 vbSizeWE(水平尺寸线), 或 vbSizeNESW(右上-左下尺寸线),或 vbSizeNWSE(左上-右下尺寸线)。用户一看就知道可以改变该控件的尺寸。而在其余区域则将 Form1 的 MousePointer 属性设成缺省值(vbDefault)。当用户按下鼠标键并拖动鼠标时根据当前的 MousePointer 进行判断该如何改变控件的大小。具体操作可参看附带的例程。

  第二中方法不需要调用API 函数,但需要额外的控件。同样新开一个工程,在Form1 上放一个TextBox 控件,命名为Text1。然后紧靠Text1 的右侧放一个高度与Text1 相同但宽度尽量小的PictureBox 控件,命名为Picture1。宽度要小到看不见立体效果。将Picture1 的MousePointer 属性设置成9 (vbSizeWE) 。

  Picture1 的MouseMove 事件如下:

Private Sub Text1_MouseMove(Button As Integer,Shift As Integer, x As Single, y As Single)
If Button<>1 Then Exit Sub
Picture1.Left=Picture1.Left+X
'Move Picture
Text1.Width=Picture1.Left-Text1.Left
'Change TextBox's size
End Sub

  运行程序,将鼠标移到 Text1 的右边缘,这时鼠标变成水平尺寸线的样式,按住鼠标左键左右移动鼠标,你会看到 Text1 的大小可以自由改变。
  以上只是举一些简单的例子说明定制控件尺寸的基本方法,起到抛砖引玉的作用,读者可以根据需要增强相应的功能,但要注意建立错误陷阱捕获错误。

  附:

  第一种方法的源程序:

'API Function declare

Declare Function ScreenToClient Lib "user32"(ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Type POINTAPI
x As Long
y As Long
End Type

Private Sub Form_MouseMove(Button As Integer,Shift As Integer, x As Single, y As Single)
Dim Pnt As POINTAPI
Dim CurX As Long
Dim CurY As Long
Dim DistX As Long
Dim DistY As Long

Const mDist = 150 '150 twips

GetCursorPos Pnt
'Get mouse position
ScreenToClient Me.hwnd, Pnt
'Convert to client coordinate
CurX = Pnt.x * Screen.TwipsPerPixelX
'Pixels to Twips
CurY = Pnt.y * Screen.TwipsPerPixelY
DistX = Abs(CurX - (Text1.Left + Text1.Width))
'distance to text1's
DistY = Abs(CurY - (Text1.Top + Text1.Height))

If DistX < = mDist And DistY < = mDist Then
  'set mouse pointer
  'according to distance 
  Form1.MousePointer = vbSizeNWSE
ElseIf DistX <= mDist And DistY > mDist Then
  Form1.MousePointer = vbSizeWE
  ElseIf DistX > mDist And DistY <= mDist Then
  Form1.MousePointer = vbSizeNS
Else
  Form1.MousePointer = vbDefault
End If

If Button <> 1 Then Exit Sub
If Form1.MousePointer = vbSizeNWSE Then
  'change text1' size
  Text1.Width = CurX - Text1.Left
  Text1.Height = CurY - Text1.Top
End If
If Form1.MousePointer = vbSizeWE Then
  Text1.Width = CurX - Text1.Left
End If
If Form1.MousePointer = vbSizeNS Then
  Text1.Height = CurY - Text1.Top
End If
End Sub

Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Form1.MousePointer = vbDefault
'set default mouse pointer
End Sub

2013年美国开发者薪资调查报告 MDCC之移动娱乐游戏峰会:金玩奖揭晓最火游戏 算法为王:且看Mac Mini如何超越1636节点的Hadoop 鲍尔默成大善人?微软正式废除员工排名评审制度 工信部软件司副司长陈英为MDCC 2013大会致开场辞 全民移动•重塑世界 2013移动开发者大会盛大开幕 泯灭Web App可用性的七个开发错误 保益互动创始人曹军:听到的世界更精彩,盲人应用背后的故事 Gumi公司CEO国光宏尚: 大公开!日本手游市场攻克方法! Great Hill Partners高管Chuck Goldman &amp;amp; 南京创毅CEO William Wei:超越黑莓——下一代企业移动 高通业务拓展副总裁沈劲:智能手机2.0——以体验为中心 百度副总裁李明远:百度轻应用——长尾APP的最佳选择 中国工程院院士李德毅:大数据时代的认知计算 创新工场联合创始人汪华:2013年中国移动互联网进入深入区 百度副总裁李明远:解答关于百度轻应用的八大疑问 谷歌推出PNaCl,帮助开发者在任何硬件和网站上运行代码 阿里云:双十一350亿交易额的幕后英雄 索尼移动智能设备全球技术总监Goran Andersson:索尼移动可穿戴设备解决方案 腾讯社交网络事业部副总裁陈磊:腾讯移动开发者服务体系 基调网络副总裁陈靖华:全面掌握移动应用性能 蓝港在线创始人王峰:手游新时代下的机会与挑战! Couchbase CEO Bob Wiederhold:数据库云端同步,移动应用开发的未来 三星电子大中华区副总裁黄伽卫:构建移动互联生态,解读内容服务新方向 MDCC 2013移动开发者大会:新浪潮,新硬件! 网站建设,如何平衡产品特性和利益需求? 开发者是如何提升技能水平的 Databricks核心成员专访:大数据时代“智能手机”Spark 数据密集、快速启动、核心应用,IBM存储重兵布阵 企业移动应用与BYOD:移动互联大势所趋 “首届智能硬件峰会”上午会议亮点汇总 代价究竟高不高,苹果为什么要在Android专利诉讼上花费2亿美元? DBCombo数据绑定控件下拉列表的宽度 较特殊的 API 使用问题 菜鸟问题:如何把一张表的数据添加到另一张表中(结构完全相同)? 升级的sdk下,CFileDialog关闭时出错 控件许可问题 各位,你们有没有遇到过这样的情况 明天我生日,怕大家不在,先贴出来,祝福我吧! 在做程序的时候需要从客户端不停的刷新服务器端的数据 ,是用xmlhttp还是web service? 如何将.DBF在ODBC中链接,有很多选项,是VFP(table)还是其它的?请各位赐教 周末散分!!! 哪位高手帮帮忙,求客户端计数器程序 高分!有关Delphi界面的问题!如何实现象QQ那样的动画移动效果 c#,xml高手请进,小弟有一个非常紧急的问题,请指点。 lotus notes怎样连接多台服务器? 数据存放的问题 adodc+datagrid数据更新后,grid怎样及时更新? 请教 请问JDBC 中classes12.jar、classes12_g.jar、classes12dms.jar这三者有什么区别? 给小弟一个启示 寻电子商务领域合作-购买源码或合作开发 水晶报表显示时如何让它不出现toolTip提示信息? 开发Struts程序遇上的问题 如何启动Tomcat?? 在access中怎样给一个日期型的字段附空值???(在线等待) 快毕业了,我的烦恼?!!! 如何保存页面,一项一项粘贴他妈的太烦了! 在IE下执行servlet时为什么有些servlet可以正常运行,有些却提示下载文件? 如何把两个关联的DataTable 合并成一个DataTable 或者DataView 象数据库中的视图 在asp调用access数据库时出现错误( 在线等待) InstallShield Developer 7.0 East Language Pack 的问题!!! *****寻求好的Global.asa(在线等待)******* 大家快过来看看这个小程序!送分!来者有分! 学完操作系统的,将来能作什么工作呢? Insert一幅图片到Oracle数据库及从数据库中取出这幅图片的方法及代码(1) 如何将文本框设置成只读的,帮帮忙了!在线等待! MSXML如何使用,能否给一个较详细的例子 一阵风 屏蔽控件某个事件 使用MicroSoft DTSPackage Object Library开发的问题 逃离爱情 [原创] 如何动态使用web service 自动递增的字段数据类型,是否应该设置成number? 寻电子商务领域合作-购买源码或合作开发 讨论:如何用WinSock API 的异步选择模型(WSAAsyncSelect模型)构建一个多连接的服务器? 如何删除一个服务,如:OracleOraHome81TNSListeneroral;谢谢!!! 请问各位软件是如何控制硬件的? 如何判断输入的字符串长度? 能否以命令方式启动win2000 请问如何判断字符串中的字符在a~z之间 如何在jsp调用windows下的程序执行.就是IE当shell.(有点像黑客:) 不是用来干坏事 高手呀,能告诉我怎么把OLE drag&drop过程中的图元格式改成增强图元格式? 用be kind to sb.,be good at ,do well in 造句各两个,带翻译 求boyfriend的《boyfriend》,《you&l》,《don't touch my girl》和《love style》的mp3 英语翻译玛格丽特?米歇尔的著作体现出了一个女性少有的深思熟虑和广博的知识见闻,堪与法国大革命时期的小说媲美.从其作品主人公思嘉的爱情婚姻中我们可以明显看出带有作者自己的影 用叠词组成成语:( )( )本本 急求写江阴美食的作文,突出色香味形 ab和von在表示“从……”时的区别是? be cruel to sb怎么造句3个 求boyfriend Don't touch my girl 专辑正版 为何第二个句子有VON?问一下这两句话为何第二句有个介词von?1.Nehmen Sie die Tabletten dreimal am Tag ein,jedesmal zwei.2.Nehmen Sie bitte von den Tabletten dreimal taeglich zwei.第一句没有 高中英语非胃语,何时用不定式,何时用分词或动名词 use this disc only to reinstall the software什么意思 关于分词做状语有一个问题!首先请看例子:1.gone from home so long,the memory of his hometown faded.2.having lived in the countryside for many years,he konws a lot about farming.这里的gone和having lived都是表示原因的分词 英语翻译谁能帮我翻译一篇化学论文,如果不能的话,能不能介绍些好的翻译方法,或者告诉我哪边有人能帮上我忙的要翻两页,看得我眼花缭乱的.复制到word文档出去图片外是3页. 英语翻译 英语语法分词做状语的问题I walked into the classroom,taking a bag,followed by five students.后面的状语可以用不同的时态吗? 动词的英文有哪些 求电影推荐 英文名字和中文名字 有意义的要很多英文的 大概30个 需要名字 最好有年份然后最好可以每个电影大概告诉讲了什么(这条没那么重要)最好出名点的 没有色情 没有暴力 帮忙分析一下这个句子,关于动名词做状语At the first shot of firing,all the animals took a tearing retreat from the spot.这句话中的at the first shot of firing为什么不能用hearing the first shot of firing?这是二级笔译综 帮我翻译“But,when he wanted to leave the pain”这句话出来. 足球中各位置的英文简称是什么? 4-Channel,±5 V,51.2 kS/s per Channel,24-Bit IEPE 英语翻译年轻时,他酷爱踢足球.当听到这个球消息时,她伤心的哭了.我的父母结婚时,一穷二白. 足球队里各个位置的英文简称?要详细点 one,ones的区别 英语翻译帮我翻译首英语歌,要一句一句的啊[00:18.48]Lately I've been thinking about what I can do[00:22.48]I've been stressing to fall back in love with you[00:26.46]I'm so sorry that I couldn't follow through[00:29.63]But I can't go 英语翻译The driver contained in this package is legally licensed ONLY when bundled for sale or use with lenovo pc can'be use on other computer one与ones区别;;; 英语翻译追梦人在我们的现实生活中,有许多人他们并没有远大理想.坦白地说,他们就是混日子.对我来说,人类没有理想就如同大树没了叶子.在我眼中,理想是我的力量,是我的方向.一个典型的 求翻译The driver contained in this package is legally licensed ONLY when bundled for sale or use w 家长对孩子的评语. 关于小兔子的饮食的作文 package with this package什么意思 怎么帮孩子写家长评语啊...要写好一点的...要两篇! 有啥好听的网名?激励.立志的(英文,带翻译)或汉文 德语介词aus ,von的区别?aus,von在表示"从.来“时有什么区别? 儿子三年级数学考了95分家长评语怎么写 求有意义的男生用的英文网名,越多越好,带上中文意思, can/can`t/must/mustn`t/need/needn`t/have to/到底有什么区别?如题 谢谢了谢谢啊 ~~~! 我 现在 初3啊 This world is how This world is how 有励志的英文签名吗?附上中文!不要太长,我要能够作为座右铭的 a bit a bit of a little a little of 的区别谁能告诉我这四个单词有什么区别?越详细越好, dirty call 一词一空:这是一部新电影,由瑞克.史密斯出演.This is a new movie,Rick Smith _ _ it. a little bit of this a little bit of that 是什么意思 Is this a business call or a personal call?要准确的答案. with加动名词 跟 过去分词 是什么形式 懂英语我小弟叫我帮他查…………将下列时间写成英语形式 7:10 9:25 1:30 10:41 4:55 12:1311:26 2:45 2:30 8:55 This is what we call the dirty air what comes out of cars.怎么翻译 1,This is Mr.Smith,-----I think has something interesting to这里 tell us.A who B whon C that D / 那这样C也可以指人也可以作主语啊.这里在从句中作主语吗?单是有I了啊.2,They want to make it clear to the public-----they will a little of,a bit of,a little ,a bit有什么区别 英语翻译2008年前三季度中国玻璃纤维行业经济运行情况,以及面对全球金融危机玻纤行业应如何度过难关.面对金融危机,行业库存加大、运营成本持续走高、出口放缓,销售低迷的严峻考验.(1 衡中初三升高一的假期作业不写行吗 我现在才发现有写也写不完了 Rick 请在帮小弟一个忙,懂英文的朋友,内容如下No man or woman is worth your tears,and the one who is ,won‘t make you cry.这句话是撒意思啊 衡中作业有没有投机取巧的方法呀? 战争与和平作文1000字 谁有呀 You can go or not.for all I care. 衡水中学跑操跑几分钟啊 写美食的作文,急速啊,求各位亲们了 英语翻译我感谢我的母校从我踏进校园的那一刻起,我就知道,这所学校赋予我的不仅是未知和挑战,更是一种光荣和责任,一种身为其中一员的发自内心的自豪.在学校,呼吸的每一缕空气都是纷
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘