VB的ActiveX用户控件

VB的ActiveX用户控件

VB自定义控件默认是器具用户控件类,自定义控件的事件都可以通过实现用户控件的事件来实现

用户控件类常用事件包括

事件AccessKeyPress(KeyAscii作为整数)

    当控制的用户按下控件的访问键,或者按下回车键时,当开发商已经设置默认属性设置为True时,或按下Esc键时,当开发商已经设置取消属性为True 。  默认属性和取消财产被控制设置DefaultCancel属性为True的作者启用。

 

事件点击()当用户按下并释放在一个对象鼠标按钮时发生。                    

事件DBLCLICK()发生,当用户按下并释放鼠标按键    

然后按下并在一个对象再次释放它。

 

事件的DragDrop(来源作为控制,X为单,Y单)

                     当完成一拖和拖放操作时发生。

事件的dragover(来源作为控制,X为单,Y单,国家作为整数)

                     当拖动和拖放操作过程中出现。

 

事件EnterFocus()    当焦点进入控件时发生。本身可以接收焦点的控制,

或子控件可以接收焦点。

事件ExitFocus()    当焦点离开控件时发生。本身可以失去焦点的控制,

或子控件可能失去焦点。

事件的GotFocus()当一个对象接收焦点时发生。    

事件引发LostFocus()    当一个对象失去焦点时发生。

 

事件GetDataMember(数据成员,作为字符串数据作为对象)

                     当数据消费者问这个数据源为它的数据成员之一发生。

 

事件显示()发生时,控件的Visible属性更改为True。           

事件隐藏()发生时,控件的Visible属性更改为False。           

事件的HitTest(X为单,Y单,HitResult作为整数)

                     发生在响应鼠标活动一个没有窗户的用户控件。

 

事件初始化()    当应用程序创建一个窗体,mdi窗体或类的实例时发生。

事件终止()    时,所有引用到发生在窗体,mdi窗体或类的一个实例

从存储器中删除。

 

事件InitProperties()    发生第一次创建用户控制或用户文档。

的PropertyChanged([属性名])  

                     通知容器上用户控件的属性已经改变。

事件ReadProperties(PropBag作为的PropertyBag)

当一个用户控件或用户文档被要求从文件中读取其数据时发生。

事件WriteProperties(PropBag作为的PropertyBag)

当一个用户控件或用户文档被要求将其数据写入一个文件时发生。

 

事件的KeyDown(邀请码为整数,按住Shift键作为整数)

                     当用户按下一个键,一个对象具有焦点时发生。

事件的KeyPress(KeyAscii作为整数)

                     当用户按下并释放一个ANSI键时发生。

事件的KeyUp(邀请码为整数,按住Shift键作为整数)

                     当用户释放的关键,而一个对象具有焦点时发生。

事件的MouseDown(按钮为整数,按住Shift键为整数,X为单,Y单)

    当用户按下了鼠标按键的对象具有焦点时发生。

事件涂料()时发生窗体或PictureBox控件中的任何一部分被移动,放大,或暴露。       

事件调整大小()当窗体第一次显示或发生的对象的大小改变       


本例通过实现一个只限输入数字的文本框的自定义控件为例,来了解VB自定义控件的实现

1.创建一自定义NumericInput,在自定义控件中加入一文本框txtInput

2.实现当改变自定义控件大小时,txtInput文本框能自动填充满整个自定义控件区域。可通过实现用户控件调整大小事件

公开声明函数的MoveWindow库“USER32”(BYVAL HWND长,BYVAL x As中龙,BYVALÿ长,_

             BYVAL nWidth长,BYVAL nHeight参数长,BYVAL bRepaint长)只要

   

    公共职能Twip2Pixel(X)作为整数

        昏暗的CX       只要

        昏暗的CY       只要

        CX = Screen.TwipsPerPixelX

        CY = Screen.TwipsPerPixelY

        Twip2Pixel = X / CX

    结束功能

   

    私人小组MoveControl(Ctrl键控制,BYVAL离开了作为整数,BYVAL顶级整数,_

        BYVAL宽度为整数,BYVAL高度整数)

        昏暗LRESULT只要

        在错误恢复下一页

       

如果宽度<0,则宽度= 0

        如果高度<0,则高度= 0

        LRESULT =的MoveWindow(ctrl.hwnd,_

Twip2Pixel(左),Twip2Pixel(顶部),Twip2Pixel(宽),Twip2Pixel(高度),1)

        “*如果改变大小失败,则直接改变

        如果LRESULT = 0。然后  ctrl.Move左侧,顶部,宽度,高度

    结束小组

 

    私人小组UserControl_Resize()

        MoveControl txtInput,0,0,UserControl.ScaleWidth,UserControl.ScaleHeight

    结束小组

 

3.  为自定义控件添加属性

    为控件添加对齐属性属性有四个选项左对齐/右对齐/中心/综合来控制文本框的对齐

    公共枚举AlignmentConstants

        [左对齐] = 0

        [右对齐] = 1

        [心] = 2

        [常规] = 3

        [用户定义] = 4

结束枚举

 

    私人m_Alignment作为AlignmentConstants

      '属性必须是公共的,选项是枚举/布尔类型

    公共属性获取对齐方式()作为AlignmentConstants

        对齐= m_Alignment

    高端物业

    公共属性让对齐方式(值AlignmentConstants)

        m_Alignment =价值

        PropertyChanged的“对齐”

    高端物业

    ReadPropertiesWriteProperties事件用来保存和读取属性改变后的值否则每次更新控件都是使用默认属性值

    私人小组UserControl_ReadProperties(PropBag作为的PropertyBag)

        对齐= PropBag.ReadProperty(“对齐”,0)

    结束小组

   

    私人小组UserControl_WriteProperties(PropBag作为的PropertyBag)

        呼叫PropBag.WriteProperty(“对齐”,对齐,0)

结束小组

4.  为自定义控件添加事件

    为自定义控件添加点击事件,当单击txtInput时发生

    事件单击()

    私人小组txtInput_Click()

        点击的RaiseEvent

    结束小组

 

5.  扩充,将自定义控件扩充为组合的控件

    Win32 API中提供的DrawFrameControl函数用于描绘一个标准控件,可描绘一个按钮或滚动条的帧,在本例中,将txtInput扩充,在txtInput右侧增加一按钮,使txtInput成为一个选择框

    DrawFrameControl API函数定义如下

    声明功能DrawFrameControl库“USER32”(

        BYVAL的hDC长,_                     '要在其中作画的设备场景

        LPRECT作为RECT,_                        '指定帧的位置及大小的一个矩形

        BYVAL UN1长,_                     '指定帧类型的一个常数

        BYVAL UN2只要_                      '一个常数,指定欲描绘的帧的状态。

        )只要                               '非零表示成功,零表示失败

    “帧类型常数包括

    私人常量DFC_CAPTION = 1             '标题栏

    私人常量DFC_MENU = 2                '菜单

    私人常量DFC_SCROLL = 3              '滚动条

    私人常量DFC_BUTTON = 4              “标准按钮

   

    “帧状态常数包括

    私人常量DFCS_CAPTIONCLOSE = H0     '关闭按钮

    私人常量DFCS_CAPTIONMIN =&H1       '最小化按钮

    私人常量DFCS_CAPTIONMAX =&H2       '最大化按钮

    私人常量DFCS_CAPTIONRESTORE = H3   '还原按钮

    私人常量DFCS_CAPTIONHELP =&H4      '仅Windows 95:帮助按钮

 

    私人常量DFCS_MENUARROW = H0        '子菜单箭头

    私人常量DFCS_MENUCHECK =&H1        '复选标记

    私人常量DFCS_MENUBULLET =&H2       '子弹

    私人常量DFCS_MENUARROWRIGHT = H4

 

    私人常量DFCS_SCROLLUP = H0         滚动条的“向上箭头

    私人常量DFCS_SCROLLDOWN =&H1       '滚动条的向下箭头

    私人常量DFCS_SCROLLLEFT =&H2       '滚动条的左箭头

    私人常量DFCS_SCROLLRIGHT = H3      “滚动条向右箭头

    私人常量DFCS_SCROLLCOMBOBOX = H5   '组合框滚动的酒吧

    私人常量DFCS_SCROLLSIZEGRIP =&H8          '大小握

    私人常量DFCS_SCROLLSIZEGRIPRIGHT =&H10    '尺寸握在窗口的右下角

 

    私人常量DFCS_BUTTONCHECK = H0      “复选框

    私人常量DFCS_BUTTONRADIO =&H4      “单选按钮

    私人常量DFCS_BUTTON3STATE =&H8     '三种状态的按钮

    私人常量DFCS_BUTTONPUSH =&H10      '按钮

 

    私人常量DFCS_INACTIVE =&H100       “按钮不可用(灰色)

    私人常量DFCS_PUSHED =&H200         '按钮被按下

    私人常量DFCS_CHECKED =&H400        '按钮被选中

 

    私人常量DFCS_ADJUSTRECT =&H2000    '边界矩形调整为排除周边

                                            按钮的“边缘

    私人常量DFCS_FLAT =&H4000          '按钮有一个平坦的边界

    私人常量DFCS_MONO =&H8000          '按钮具有单色边界

   

    “绘制文本常量

    私人常量DT_CENTER = H1

    私人常量DT_LEFT = H0

    私人常量DT_RIGHT = H2

    私人常量DT_VCENTER = H4

    私人常量DT_SINGLELINE =&H20

   

    私人小组抽签()

        如果txtInput.Locked或不txtInput.Enabled然后

            MoveControl txtInput,0,0,UserControl.ScaleWidth,UserControl.ScaleHeight

        其他

            如果UserControl.BorderStyle = 1,则

                MoveControl txtInput,0,0,UserControl.width - 300,UserControl.Height

            其他

                MoveControl txtInput,0,0,UserControl.width - 250,UserControl.Height

            万一

            呼叫drawPushButton(假)

        万一

    结束小组

 

    私人小组drawPushButton(被推为布尔)           '*绘制按钮

        昏暗的RC       作为RECT

        GetWindowRect UserControl.hwnd,RC

        rc.Right = rc.Right - rc.Left

        如果UserControl.BorderStyle = 1,则

            如果UserControl.Appearance = 1,则

                rc.Bottom = rc.Bottom - rc.Top - 3

                rc.Right = rc.Right - 3

            其他

                rc.Bottom = rc.Bottom - rc.Top - 2

                rc.Right = rc.Right - 2

            万一

        其他

            rc.Bottom = rc.Bottom - rc.Top

        万一

 

        rc.Left = Twip2Pixel(txtInput.width)

        rc.Top = 0

        UserControl.Cls

        DrawFrameControl UserControl.hdc,RC,DFC_BUTTON + DFCS_BUTTONPUSH,_

            DFCS_ADJUSTRECT + DFCS_BUTTON3STATE

       

        “*绘制文本

        如果然后推

            rc.Right = rc.Right + 1

            rc.Bottom = rc.Bottom + 1

        万一

        DrawText的UserControl.hdc,“...”,-1,RC,DT_CENTER + DT_VCENTER + DT_SINGLELINE

    结束小组

   

    “用户控件显示事件中绘制按钮

    私人小组UserControl_Show()

        呼叫平局

    结束小组

 

    “响应按钮点击事件

    “实现UserControl_MouseDown事件

    事件ButtonClick()

    私人小组UserControl_MouseDown(按钮为整数,Shift键整数,X为单,Y单)

        如果按钮= 0,则

            的RaiseEvent ButtonClick

        万一

    结束小组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值