标题 在 Visual Basic 6 中让用户在运行时移动和调整控件大小
描述 此示例说明如何让用户在 Visual Basic 6 中在运行时移动控件和调整控件大小。
关键词 拖动、移动、调整大小、控件、Visual Basic 6
类别 控件,ActiveX
 

本示例构建了一个 ActiveX 控件,允许用户在运行时移动和调整控件的大小。它会自动调整它包含的控件的大小以适应。

UserControl 在其右下角包含一个名为 Corner 的小图片框。该控件跟踪其 Mo​​useDown、MouseMove 和 MouseUp 事件。当您拖动该控件时,以下代码会调整 UserControl 的大小,将 Corner 放回右下角,并调整包含的控件的大小以适合。

 
Option Explicit'Default Property Values:
Const m_def_Draggable = True
Const m_def_MinWidth = 240
Const m_def_MaxWidth = 100000
Const m_def_MinHeight = 240
Const m_def_MaxHeight = 100000
Const m_def_HandleSize = 45
'Property Variables:
Dim m_Draggable As Boolean
Dim m_MinWidth As Long
Dim m_MaxWidth As Long
Dim m_MinHeight As Long
Dim m_MaxHeight As Long
Dim m_HandleSize As LongDim Resizing As Boolean
Dim Moving As Boolean
Dim StartX As Single
Dim StartY As Single' *********************************************
' Start resizing the control.
' *********************************************
Private Sub Corner_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Not Draggable Then Exit SubResizing = TrueStartX = XStartY = Y
End Sub' *********************************************
' Resize the control.
' *********************************************
Private Sub Corner_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim dw As Single
Dim dh As Single
Dim wid As Single
Dim hgt As Single
Dim w As Single
Dim h As Single' Do nothing unless we're resizing.If Not Resizing Then Exit Subdw = X - StartXdh = Y - StartYIf dw = 0 And dh = 0 Then Exit Subwid = Width + dw' Make sure we will fit on the form.w = ScaleX(wid, ScaleMode, Parent.ScaleMode)If w > Parent.ScaleWidth - Extender.Left Thenw = Parent.ScaleWidth - Extender.Leftwid = ScaleX(w, Parent.ScaleMode, ScaleMode)End If' Stay between MinWidth and MaxWidth.If wid < m_MinWidth Then wid = m_MinWidthIf wid > m_MaxWidth Then wid = m_MaxWidthhgt = Height + dh' Make sure we will fit on the form.h = ScaleX(hgt, ScaleMode, Parent.ScaleMode)If h > Parent.ScaleHeight - Extender.Top Thenh = Parent.ScaleHeight - Extender.Tophgt = ScaleY(h, Parent.ScaleMode, ScaleMode)End If' Stay between MinHeight and MaxHeight.If hgt < m_MinHeight Then hgt = m_MinHeightIf hgt > m_MaxHeight Then hgt = m_MaxHeightSize wid, hgt
End Sub
' *********************************************
' Stop resizing the control.
' *********************************************
Private Sub Corner_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)Resizing = False
End Sub
 
UserControl 排列它包含的控件,因此底部有一个小间隙。这让 UserControl 显示出来并让您看到 Corner PictureBox。

UserControl 也在其自己的表面上跟踪 MouseDown、MouseMove 和 MouseUp 事件。当您在 UserControl 上单击并拖动时,代码会确定该控件的位置并调用 Extender.Move 以适当地移动 UserControl。

该控件还包括在注册表中保存和恢复大小和位置的例程,因此程序可以轻松地在程序运行之间保持其大小和位置。

在 Visual Basic 6 中让用户在运行时移动和调整控件大小相关推荐

  1. 在vc2005中使用MoveWindow()调整控件大小,不能及时刷新,在vc6中则可以

    在vc2005中使用MoveWindow()调整控件大小,不能及时刷新,在vc6中则可以? // ------------------------------ vc2005 ------------- ...

  2. Visual Basic.NET中访问数据的方法(zz)

    http://info.shangdu.com/new/2003-5-8/200358113624.htm        Visual Basic.NET是微软对Visual Basic语言进行的升级 ...

  3. 在 Visual Basic .NET 中使用存储过程(转载)

    Billy Hollis  2002年9月14日 从 MSDN Code Center 下载 StoredProcVB.NET.exe 示例文件(英文). 我们作者通常将软件分为两类 - 真实软件和演 ...

  4. 在 Visual Basic .NET 中使用存储过程

    Billy Hollis 下载 StoredProcVB.NET.exe. 我们这些作者倾向于将软件分为两类: 实际软件 和 演示软件. 实际软件就是那些在现实中能够真正运作的软件. 演示软件则是为了 ...

  5. 在Visual Basic .NET中使用存储过程

    摘要:Billy Hollis 解释了在复杂系统中使用存储过程的好处,使存储过程超出了演示软件的范畴,并提供了有关如何访问存储过程并在您自己的应用程序中开始使用这些存储过程的实用示例. 我们作者通常将 ...

  6. Visual Basic 2005 中的程式語言加強功能

    Visual Basic 2005 中的程式語言加強功能 作者:Stan Schultes Microsoft MVP 2004 年 10 月 摘要:本文介紹許多 Visual Basic 2005 ...

  7. c++builder中dbgrid控件排序_如何实现APP中各种布局效果?学会这几个控件就够了...

    学习Flutter有一段时间了,也做了一些APP,但是总感觉对控件的使用一知半解,没有系统的概念,所以特意花了几天时间,把所有的控件都研究了一遍,总结出了常用的控件和使用方法, 俗话说:工欲善其事,必 ...

  8. 报错:此版本的SQL Server Data Tools与此计算机中安装的数据库运行时组件不兼容...

    在Visual Studio 2012中使用Entity Framework,根据模型生成数据库时,报如下错误: 无法在自定义编辑器中打开Transact-SQL文件 此版本的SQL Server D ...

  9. WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆)

    原文:WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆) 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.欢迎转载.使用.重新发布,但务必保 ...

最新文章

  1. QQ“远程协助”文字输入技巧
  2. python声明_在Python中什么是全局声明?
  3. ubuntu设置鼠标单击打开文件夹或者文件
  4. SQL日常维护的语句
  5. 【结论】棋盘(jzoj 2297)
  6. oracle推送短信,ORACLE 10G如何实现发短信的服务?
  7. python重载运算符乘法_Python | 使用乘法运算符创建一个字符串的多个副本
  8. static_cast、dynamic_cast、reinterpret_cast、和const_cast
  9. 厨师刀行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  10. 微型计算机原理及应用 湖南大学,2015年微机原理及其应用-湖南大学.doc
  11. matlab计算轮廓曲率半径,用matlab求出最小曲率半径曲线方程实例
  12. adams如何保存_实用的Adams使用技巧
  13. 人脸识别(Face Recognition)简要综述
  14. java 多线程高级,java 多线程高级(传统多线程)
  15. GitHub 上100个优质前端项目整理,非常全面!
  16. Numpy报错解决办法
  17. 2021高考秦安一中成绩查询,2021年天水高考状元是谁分数多少分,历年天水高考状元名单...
  18. 在Linux系统中访问虚拟机的数据库和访问Windows(本机)下的数据库:
  19. Android5.1 -Recents分析
  20. PSPICE理想恒功率负载(CPL)建立方法

热门文章

  1. html5离线存储图片,HTML5教程 离线存储技术详解
  2. 距离高手,你还缺少刻意练习
  3. 德国大学生发明手机安全气囊 再不用担心碎屏啦!
  4. 基于Dedup的数据打包技术
  5. 用Python写一个文字版猫抓老鼠的游戏
  6. UE5编译报错:Error MSB3073
  7. 能做到云中分钟级数据恢复 爱数灾备云据说能引领行业10年
  8. 专利申请流程,申请专利去哪
  9. 三分钟详述如何实现像素风格Shader
  10. 学好单片机设计,关于晶振的这些难题一定要先搞懂!