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

运行时改变控件大小的两种方法-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

深度解析浪潮新八路服务器TS860 支持Box2D,开源HTML5 2D游戏引擎FLAG 一周消息树:从程序员到架构师的方法与逻辑 【CTO俱乐部走进海尔】海尔的转型探索之路 十一问MongoDB CTO,谈NoSQL人气王的扩展、事务及运维 腾讯“创业•密码”开发者论坛 ChinaJoy引爆创业者关注 从F1赛车到智能手机,无线充电技术之崛起 助力梦想!MDCC免费为优秀App开发团队提供展位 为Symfony2和Redis正名,基于PHP的10亿请求/周网站打造 【聚焦API】教你如何选择最适合的NLP API服务商? 直接改应用!Flipboard开源iOS应用内调试工具FLEX 专访腾讯游戏运营总经理崔晓春:云时代游戏运营的变革与创新 嵌入式专家Bruce Douglass经验谈 门票销售过半 从2014微信开发者大会购票者特征说起 当来自金星的Devs碰上火星的Ops——共话应用扩展 移动平台市场占有率:Android首次赶超iOS 豌豆荚范怀宇 I/O大会总结:Android无处不在 轻博客始祖Tumblr:哈希以支撑2.3万Blog请求/秒 《近匠》FIR.im:简单易用的内测分发工具 传苹果公司将于9月9日召开新一代iPhone发布会 近百家微信开发商参与征集评选活动 TOP10正浮出水面 Java程序猿,手游引擎怎么选? MDCC 2014优秀移动团队免费展位火热申请中 【微信讲师面对面】你在企业服务号开发中遇到的坑和难点 五个解决方案让MongoDB拥有RDBMS的鲁棒性事务 浅谈Apache Spark的6个发光点 安卓 “假ID” 签名漏洞,竟然骗过了支付宝和360 从Social到Big Data,移动App蚂蜂窝转型推新品 《近匠》nice曹大鹏,从男装导购到潮人社区的心路历程 DevOps扼杀的不是开发者,而是开发生产力! 利用Docker构建开发环境 三人合作共同开发一网站,现需页面设计,有意者留下EMAIL 怎样用C#把窗口菜单和按钮做成象VS.NET中的平面菜单和工具栏上的平面按钮? 为什么在MMC中新建SQLSERVER注册总是出现超时已过期的错误? 這樣定義宏是什么意思:#define LIBCMD(givenfunction) \? ===这样的SQL在ORACLE 怎么执行不了 一个WIN2000与WINXP的共享问题 如何将一个CBitmap存为BMP文件? 在directshow中,如何实现像大部分播放器那样的“快进”功能? 较难问题--IE6不能启用cookie? 如何修改group里的数据排序方式? 如何写动态SQL语句??? 怎样让select元素不能修改? 谁用过微软的tts??? 郁闷......呀,偶MM说接吻觉得恶心!!!! 请教高手,本人想请教通过数值如:12.5转换成UNICODE的问题,急!!!在线等待 我现在的密码不好记,如何更改密码? 请教大侠;RMI问题 ASP+SQL server免 费空间哪里有100分送给你. 有没有人用过Virtual PC这个软件的啊???快救命啊!!!!!正等着用啊!!!! 有谁知道在上海周边有哪些电脑配件的厂家,如机箱.主板.显示器之类的? 关于“汇总数据”的问题 请尽快帮我解决病毒问题 菜鸟6000分依次提问ORACLE问题,第一个:大虾给我个函数里建虚表并插入数据的例子 EJB使用大数据量的问题 怎样用DirectShow写一个RenderFilter & SourceFilter linux下的应用程序,界面语言问题 VSS中的Pin和Unpin有什么用?在什么情况下使用? 一个WINXP与WIN2000的共享问题(急) 我想问一下,能不能用sql sever2000 开发桌面型的mis系统 我想监测某个端口的通信主要是 TCP 端口,不想写网卡过滤驱动,各位有什么高招? java的用户文档在那里下载? 急,大小写和建主键的问题 我学校在选拔人参加济南市一个五子棋编程大赛,请教各位高手! 请斑主Montaque进,请直接过来拿分! 关于wise installer的问题 sqlserver两个表中的求和问题,在线等待。。。 页面的设计请教 为什么老是出错,windows2000 请问getdocument写在函数里,和写在头文件里作为view类的成员,除了作用域被扩大了之外,在功能上有什么不同? 为了安全我只开了21,25,80,110,1723端口, 结果自已的IE上不了网? 不知还需要开哪个口子,才能上网.谢谢!!! 简单!!!谁能告诉我,这个定义是什么意思吗? VC不正常了,帮忙 如何根据输入参数输出指定数量的记录? 请问Javamail中如何取得邮箱(INBOX)的大小?Thanks 为了安全我只开了21,25,80,110,1723端口, 结果自已的IE上不了网? 不知还需要开哪个口子,才能上网.谢谢!!! 请问JavaScript不能传递ASP参数吗? 怎样才能在客户端快速接收到jpg图像并显示出来(30/秒) 各位老大,我想取消QQ号,怎么操作啊?QQ网站上没这个内容:( 关于application的问题 关于公网ip的利用 如何读取一个数据文件中的回车字符? 屠宰废水污水站调试后期,发现BAF池未培养出生物膜,应该怎么培养? 长期饮用哪种水最易造成营养元素的流失 知道压差,知道截面积,求得流速,(管道0阻力) 哪些生命现象体现了生物膜的流动性 串联电路中开关能同时亮控制灯泡同时亮灭吗追加50 用古蔡氏法检查葡萄糖酸钙中的砷盐,规定含砷量不得超过0.004%,问应取供试品多少克 黄豆和刚发芽的豆芽米哪个有营养?我做豆浆时,黄豆浸泡的时间太长了些,于是就用热水淋起了豆芽,请问,现在的豆芽米和豆浆的营养成分哪个高些?请问:黄豆,豆芽米和豆浆相比哪个营养价值 现在的社会朋友的真正含义 请问,1-3%的亚硫酸钠水溶液怎样才能长期保存?往1-3%的亚硫酸钠水溶液中加入:1适量有机胺,氨水,异维c钠,EDTA4NA,甘油2放入体积为水溶液一半的一些活性炭,滑石粉作吸附剂.3再滴加微量油封 一定质量的大豆全部发芽,则生成的豆芽与原来的大豆相比较,其中的有机物总量和有机物种类的多少要原因 关于朋友的定义(现实一点的说法)现实朋友是:你开心的时候一般会和你一起欢笑,你悲伤的时候一般会让你独自难过,你发财的时候一般会跟你餐前饭后,你落魄的时候一般会对你敬而远之的 1%硫化钠水溶液密封避光能长期保存吗?加入硫代硫酸钠或亚硫酸钠能够维持其水溶液的稳定性吗? 豆芽为什么在水里发科学一点,豆芽是什么科 生物膜在失去活性时,膜由半透性变成全透性后,膜的结构是怎么样的?有什么样的改变? “朋友”在字典里什么意思,在现实社会又什么意思,什么才算得“上”朋友.你把我当朋友了,我把你当朋友了,这就算得上朋友吗. 中镍铬钼球墨无限冷硬材料用什么合金刀片加工好啊 只有活细胞的生物膜才具有半透性这句话哪里错了? 氧气在水中时是怎样的? 球墨铸铁电焊补完什么合金刀头能车动 死亡的细胞膜是全透性还是半透性?细胞膜具有选择透过性,可看作是半透膜,生前他们可进行质壁分离,死后失去选择透过性就不可以进行质壁分离了.那么,他是什么全透性还是半透性?之前看到 水中的氧气来源水中的氧气会不会是水中的鱼游泳时与水的摩擦所放出的电,然后电解水生成的呢? 洗硬度高的球墨用什么刀头 求助! 谢谢! “只有活的生物膜才具有半透性”这句话错在哪? 如何从水中提出氧气? 配置药品时,量筒中有水,会怎么样 物质发生化学反应时电子总数是否会改变 实验室用甲酸和浓硫酸共热制取CO并还原氧化铜的仪器都有什么 化学有机物中核磁共振氢谱图氢的种类多少怎么看? 现有一组物质:KCl、Na2SO4、NaCl、NH4Cl,某化学兴趣小组进行以下实验:(1)分别取少量上述溶液于4支试 砷盐检查法 豆芽为什么会在水里生长 水性印花涂料中ph值低时可以用氨水调高,ph高时又用什么调低呢?过高或过低会有什么后果. 砷盐检查中加入的各种试剂的作用分别是什么 按下门铃开关,门铃就同一种声音响个不停.为什么?怎么修 为什么公交汽车玻璃敲击点都在接近角地方? Al2(SO4)3 的溶液蒸干后制取无水晶体是什么? 告诉下高一化学试题有晓得的人就说下哈, 葡萄酒(红、白)酿造的最佳PH值是多少?PH如果过高或过低有什么化学反应和现象后果?求反应方程式~最晚截止到周六晚上, FeCl3溶液蒸干后产物是Fe2O3,是因为水解变成了Fe(OH)3,HCl被蒸发掉了,燃烧生成的.那么同理,为什么Al2(SO4)3溶液蒸干后的产物还是Al2(SO4)3 新买的门铃 为什么把开关拿在手上按门铃是响的 装到墙上以后按开关 门铃就不响了? 大理石地面那种订做的淋浴房能做成三角形的吗? 请问国标20号钢等同于欧标或英标的哪种牌号钢材如题,项目需采购一批等同于国标20号钢的型材,但不能确定外标哪种牌号, 请问一下谁知道高一化学试题晓得的人说下哈,十分谢谢了9f 下列变化中,属于化学变化的是( ) a 干冰升华 b 酒精燃烧 c 铁丝弯曲 d 西瓜榨汁为什么啊!耐心回答下! 盐酸中加纯碱溶液和纯碱溶液中加盐酸的反应有什么不同 环境污染物进入人体的途径有哪些 图像后处理和图像预处理分别包括哪些?它们有什么区别? 请问欧标等级是什么东东啊? 人体散发哪些污染物 酒精检测仪是对呼出气体中哪一种气体进行检测的?喝酒后呼出的哪一种气体中含有酒精成分? 硅酸钠溶液中加盐酸离子方程式 正确读音是 苹果中是否有淀粉? 溶液中加盐酸,产生白色沉淀,溶液中一定有Ag+吗 急!甲酸与对氯苯甲酸酸性比较!给点解析 此为用甲酸制备CO的实验,反应后应先熄灭那个酒精灯?答案是第2个, 有人对我说你物质了?什么意思 晶体含有杂质时熔点为什么会变化? 煮鸽子蛋的时候煮几分钟营养最不容易流失掉. 女生物质是什么意思 马凯将赴欧主持第四次中欧经贸高层对话奥巴马演讲时扶住快要晕倒的孕妇被疑做孟加拉国客机厕所中现280块金锭 价孟加拉国客机厕所中现280块金锭 价研究称美国人网购母乳风险高 75%或研究称美国人网购母乳风险高 75%或芬兰一研究人员拟通过拍摄关注当地避难澳新州消防部门提醒当地居民撤离以应对日本东京警视厅一警官因涉嫌唆使少女卖日本进行冻结核污水实验 望解决污染水分析称政府再停摆凸显美国政治新焦点妻子选总统 洪都拉斯被罢黜总统或可重美国男子冲浪遭遇鲨鱼 用拳击技巧击将马来西亚妇女操作轿车不当误撞死邻居7俄达吉斯坦地方官员遇袭身亡租客伪造房产证卖掉了房子 新\"房东浙江省新增1例人感染H7N9禽流感病美情报局局长指有关美监听事件部分报道日本长崎附近海域发现元朝军队沉船遗骸研究称美国人网购母乳风险高 75%或大型枪击案频发 美拟采新策略应对“活打破隔阂拓展人脉 港生北上无惧“水土亳州:不该享受低保 停发没商量合肥搭建科技创新“大舞台”父欲再婚,年轻女儿跳楼(图)男子隐婚通过婚介网骗色 女子怀孕方知太大意,两万现金落在出租上急寻车主,奥迪车在外“风餐露宿”不好中能内讧结束! 李壮飞发微博:和矫喆【图文】裴勇俊获日本韩流10周年最佳莫斯科一地铁司机坠轨身亡 自动刹车挽依新“食卫法”求偿首例 大统公司恐难【图文】男团2PM在日发表单曲 连续盘点:男人必吃最具实力的17种壮阳食女住户晕倒 保安竟借救人之名趁机强吻中缅天然气管道干线建成投产 惠及上亿国际新闻早报:印度总理辛格开始访俄两性养生:女人性欲望更强 男人如何驾游锡堃叫阵朱立伦 希望牵制让其不能参全国300名驴友穿越黎平“八寨一山”兴义斥资8000万元打造泥凼石林风景胡志强:12月对外宣布是否竞选台中市
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘