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

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

九城搭建的一个以Hadoop为基础的大数据平台 Windows 8复杂性的代价到底有多大? 在发布前,第一代iPhone其实并不完善 市场占有率调查:iOS 7秒杀Android 4.4 AWS会赢、OpenStack会消亡、Connected Cars可防僵尸攻击 谷歌以32亿美金收购iPod之父的创业公司Nest 物联网时代来临 微软2014,有你期待的吗? 映趣科技发布inWatch Z/inWatch X 后者采用全彩透明柔性屏 程序员没有天才:暴风影音首席架构师鲍金龙访谈 开放式创新改变世界——OpenStack生态系统将重新洗牌 Java 8最终发布日期敲定,即使有bug也要发布 Meteor PK Django,谁更适合开发实时Web应用? 学编程就像选家具:去宜家还是从种树开始? 前车之鉴 十二个年度最差设计网站汇集 冷暖交替,2014年编程兴衰趋势预测 诺基亚出Android手机,微软或将受惠 苹果不收购Nest的大猜想 Netflix开源S3一致性提升利器S3mper Fi 《近匠》第06期:UCloud——目标!完整云服务 小三上位:Windows Phone不容忽视的契机 “详解Visual Studio 2013”全国巡讲北京站:无忧开发iOS及Android应用 Chrome最新版:快速静音及在Win8中建Chrome OS系统 雅虎COO Henrique de Castro因业绩不佳被解雇 分析比特币背后的数据算法,抢占背后巨大市场先机 美食菜谱将会成创业风口的两大理由 Windows XP杀毒软件更新 将被延至2015年7月 小心,商家已经盯上你了 一软一硬 让你时刻保持清醒的可穿戴产品 寓教于乐 贝瓦依托移动平台打造中国式儿童“轻教育” 中科创达:CES2014上的中国红 SA:2014年移动互联网十大技术创新预测 一个更新远程数据库的问题 有没有JBuilder高手请过来看看 是不是有木马?几种杀木马程序多说没? 绝对真实,是中国人的都来看看 一个更新远程数据库的问题 csdn的精华区在哪里?怎么进去看? 一段C语言的程序,最后却跟了这么一段,有没有哪位高手知道这是干什么用的? 求助!!!!! 怎样提高编程水平阿?刚来请指教 下载的potoshop插件怎么安装? Move2008 J2ME SDK 发布,请下载 仅仅有OA的源代码,能做成一个可应用的商业软件吗?欢迎大家讨论 如何将OLE中的EXCEL设为指定的大小,高手救命 linux下如何安装jre? 关于打开文件的问题 我的程序怎么一放到其它机器 上就执行不了了 OLE保存时能不能单击实现??? 小问题,进者有分 一个关于sendmessage的问题。 救命啊,FTP的客户端程序 linux下如何安装jre? 怎么使验证失效? 如何实现字符串扫描? 我从来没用过C#,也不会,不过这个关于其运行的问题我确想先知道! 一个老问题! 今天我给一个男人骚扰了一回 有个问题,朋友们请进.sos 一个非常简单的问题 TListItem的Data属性(void)如何使用呀,如何读出它的值呢? bmp to ico 今天看到一个怪现象~! 软件过来人为小弟指点~~ bmp to ico 如何打开控制面板 高分求教,我爱上了兄弟的女朋友,我该怎么办?(100分) 求助:在首次适应算法和最佳适应算法中,分区分配和分区回收的c语言实现。 同在一个城市,呼吸着同样的空气,都为这老板的几块大洋打拼,蓦然回首才知道已经几年了,也该为自已的未来思考一下了。。。 请问有关两个宏 bmp to ico 硬盘无法访问的问题,急!!!估计是被黑了 ISA2000中的问题,特急,在线求助 处理窗口关闭时的动作? 高分求教,我爱上了兄弟的女朋友,我该怎么办? (100分) 请问不通过Image控件如何用直接用DC来显示一个BMP?? 请问现在数据库开发技术有哪些?大致情况? 高分求教,我爱上了兄弟的女朋友,我该怎么办? (100分) 高分求教,我爱上了兄弟的女朋友,我该怎么办? (100分) 请问汇编用什么编译器最好啊? 有什么可以下的电影啊,提供网址,谢谢 下午闷啊:( 怎样让字体自动适应分辨率 高分求教,我爱上了兄弟的女朋友,我该怎么办? (100分) 为什么exo的e不发音 同心协力的意思 不能见死不救 中引号的用法是什么是四年级下册的9自然之道 已知如图ab=ac,角abd=角acd,求证ad平分角bac可添辅助线做就是连接bc 辽宁朝阳喀左甘招小学四年级数学上册期末试卷 小悦悦现在已经去了天堂(祝福她).可是看了这么多报道要点还是在见死不救上,关于这个问题我想起曾经看过的一部美国电影,说的是一个司机在医院工作,他的工作就是每天午夜时分在城市 矩形 (8 22:37:6)在矩形ABCD中,对角线AC,BD相交于点O ,在BC上取BE=BO,连接AE,OE,若角BOE=75,求角CAE的度数? 帮帮辽西朝阳喀左的人们吧请多转发几个群,奉献你的爱心!辽宁朝阳地区常年缺水干旱,农田绝收.如今春耕忙种季节更是缺水,呼吁大家节约用水,限水=献水.节约一滴水可以让辽西年迈的父母 杜鹏程( )王任重( )丁慧中( )焦若愚( )刘海粟( )甘如饴( )这些人名取自哪里? 他非常喜欢住在这儿,用英语怎么说 同心协力的协是什么意思?帮帮我! 下学期是上学期.... 王先生喜欢住在乡村,因为乡村很安静.用英语怎么说 如果b分之一小于a分之一,那么a小于b,还是大于b? 一辆客车与一辆货车同时从A地出发开往B地,当客车行驶全程的15%时,与货车的距离是24千米(客车在前,货车在后),两车继续以原速度前进,当客车到达B地之后立即返回与货车相遇,这时货车行 一条导线的电阻R 对折分成等长的两段之后,把这两段并联起来使用,这时电阻是? 同心协力的协是什么意思?负荆请罪的负是什么意思? 请问这俩题怎么写? 哪几个国家拥有绝对主权 同心协力的协的意思是() 肝胆相照的照的意思是() 问一下大家如何统计word里一篇文章的单词量 有会的人说下嘛,打心底麻烦大家了 “我要参观钟楼”用英语怎么翻译 式子4分子1X的值不大于2分之A+的值,则A应满足什么条件 哈勃望远镜看到的了17万光年远的星云图像,那是不是我我们今天看到的图像也就是17万年前已经发生过的事情了,是不是呢, 一个国家对自己海洋的专属经济区拥有主权吗? 《秋天在哪里》说课稿 人教版二年级品德说课 哈勃望远镜可以看到多少万光年前的星空,为什么不能拿来看月球呢?NASA曾经说哈勃望远镜用来拍非常微弱的星光,说月球表面光亮太强,因此无法拍摄.但是最后NASA仍公布了一些哈勃拍摄的月面 同心协力的意思 如果A÷B=15,则(Ax3)÷(B÷3)=多少 环境规划需要的数学知识有哪些 同心协力的意思是什么 谁有新课程人教版英语作业本七年级上册的答案?是紫色的皮皮,里面有15张卷子,别和我讲大道理, 现在要求:.b-2.z=----- 的取值范围.a-1而且a、b满足的平面区域是一个三角形,如下图.图片见下。还要求: y=(a-1)^2+(b-2)^2 的取值范围。 同心协力的协意思 质点向东运动了30m,又向北运动了40m,位移的方向是北向东37m,怎么求的? 高一关于环境规划与数学的报告怎么写 同心协力的意思是什么拜托了各位 七年级上英语名师课时训练44-46 什么是规范字? 怎么保持充沛的精力和精神啊?感觉在电脑面前坐几个小时就累… 一个人向东走30米后向北走40米,位移和路程各是多少? 怎么写规范字 音乐小组的人数是奥术小组的5分之4,同时又是体育小组的5分之6,体育小组多少人先求出音乐小猪有多少人 再求出体育小组有多少人 若x²+y²=20,xy=3,则(x-y)²=? 怎样才能写规范字? HTC G2手机如何进入Recovery模式 MATLAB 随机抽取数据问题我现在有200*4的一个矩阵数据组,现在我想随机抽取150*4的数据,怎么写代码 求人教版初中语文教案全集 LG G2怎么进入Recovery模式 MATLAB中的删选数据问题和赋值问题a=1\x091\x090\x090\x090\x090\x091\x091\x0911\x090\x090\x090\x090\x090\x091\x091\x0911\x092\x092\x090\x090\x090\x090\x090\x0903\x090\x093\x093\x093\x093\x094\x092\x0921\x091\x091\x092\x092\x092\x093\x093\x0 音乐作文,写对音乐的理解和感悟,最好提到EXO,要原创(没有exo也行⊙▽⊙) G2刷recovery、还有什么方法呢?如题 为什么 我刷了大眼帮主的G2recovery 很多次了 刚刚刷了 机器人是站着 后面就又趟下了了 ====在手机用移动叔叔工具更新recovery.img 、电脑用 cmd刷入recovery.img… 我国现行的历法分为______ 和______两种紧急! 北国风光,千里冰雪,万里雪飘.相关人物名字 判断奇偶性 y=2-x平方 法国现在的历法 见死不救什么意思 帮忙做一下这个完形填空.准确一点. 同心协力的协字是什么意思 自然之道见死不救里死的意思  我和同伴紧张地看着眼前的一幕,其中一位焦急地对向导说:”你得想想办法啊!”向导却若无其事地说:”叼就叼去吧,自然之道,就是这样的.”向导的冷淡 伊朗绞不死的囚犯被免再行刑默克尔电话疑遭美安全机构窃听 致电奥奥巴马与默克尔通电话 否认情报机构窃韩国特种部队美国加州跳伞宣传独岛 (尼泊尔“世界最矮的人”的生活 (组图美女孩儿公园内挖到3.85克拉钻石 中印签署边防合作协议 习近平提中印关梅德韦杰夫访华花絮:中俄总理相约散步伦敦唐人街罢市抗议“歧视性执法”冷空气今起渗透影响 杭州明后天早晨稍美核导弹值更官开门睡觉英王室将拍四世同堂照泰咖啡店主挑战星巴克智能手机或将遥控空袭韩首名宇航员学MBA挨批京津冀等六省联防大气污染 北京抓八大韩亚空难最后一名留医伤者出院 共留医美国“监控门”又酿新风波 德法意等国默克尔电话疑遭美安全机构窃听 致电奥拯救英国最胖男子澳科学家“查叶探金”营销软件并不能帮你解决所有问题昆明新迎片区1.8万户本周置换天然气推广 | 前瞻未来:决胜下一波技术浪压力一大就分分钟抓狂?其实,你只是该天猫一屏喜报,翻译一堆槽点推广 | 2015(第八届)中国人力有人@你| 马化腾约你周一见中国一年级“大白”数学题,难哭美国三虚空之遗震撼CG大合集 神族战役完美温格谈禁药引起英足总关注使命召唤制作人:制作听粉丝的?游戏就药厂战绩不佳,施密特:我没压力《穿越火线》同名手游参展TGC 年内什么?明天不休息,继续加班!!!效仿玫瑰金iPhone6s/Note联想财报亏损怪市场 杨元庆炮轰国产厂成都男子“双11”凑热闹399元网购魔兽世界游戏场景高清还原 电影游戏对我是老虎,请你们尊重一下我这尊贵无比苹果Mac版应用商店出错 用户部分应90后的专属:优酷土豆联手TCL举办
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘