最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 编程开发 > VB开发

VB技巧:利用VB自制OCX控件

日期:09-02    来源:中国设计秀    作者:cnwebshow.com

当鼠标移到控件上的时候控件上的圆便会在鼠标不离开控件的前提下跟随鼠标移动。 TRt中国设计秀
TRt中国设计秀
  新建一OCX控件,将控件的BorderStyle属性改为1,再加入一SHAPE控件将其形状改为Circle(如图二(map2.gif)) 添加以下代码: TRt中国设计秀
TRt中国设计秀
Public Event Click() '定义该控件要产生的事件TRt中国设计秀
Dim CircleX As Integer, CircleY As Integer TRt中国设计秀
TRt中国设计秀
Private Sub UserControl_Click()TRt中国设计秀
  RaiseEvent Click '触发Click事件TRt中国设计秀
End Sub TRt中国设计秀
TRt中国设计秀
Private Sub UserControl_Initialize()TRt中国设计秀
  CircleX = Shape1.Width / 2TRt中国设计秀
  CircleY = Shape1.Height / 2TRt中国设计秀
End Sub TRt中国设计秀
TRt中国设计秀
Private Sub UserControl_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)TRt中国设计秀
  Shape1.BackColor = RGB(0, 0, 255)TRt中国设计秀
End Sub TRt中国设计秀
TRt中国设计秀
Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)TRt中国设计秀
Dim MoveX As Integer, MoveY As IntegerTRt中国设计秀
  MoveX = X - Shape1.Width / 2TRt中国设计秀
  MoveY = Y - Shape1.Height / 2TRt中国设计秀
  If (MoveX < 0) Or (MoveX + Shape1.Width > UserControl.ScaleWidth) Or _TRt中国设计秀
    (MoveY < 0) Or (MoveY + Shape1.Height > UserControl.ScaleHeight) Then Exit SubTRt中国设计秀
  Shape1.Move MoveX, MoveYTRt中国设计秀
End Sub TRt中国设计秀
TRt中国设计秀
Private Sub UserControl_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)TRt中国设计秀
  Shape1.BackColor = RGB(255, 0, 0)TRt中国设计秀
End Sub TRt中国设计秀
TRt中国设计秀
Property Get PosX() As Integer '取得CircleX的值显示给用户TRt中国设计秀
  PosX = CircleXTRt中国设计秀
End Property TRt中国设计秀
TRt中国设计秀
Property Let PosX(ByVal New_X As Integer) '把用户写入的值设置到OCX控件内部TRt中国设计秀
  If (New_X < Shape1.Width / 2) Or _TRt中国设计秀
    (New_X > UserControl.ScaleWidth - Shape1.Width / 2) ThenTRt中国设计秀
    MsgBox ("圆的X值超出界限了")TRt中国设计秀
  ElseTRt中国设计秀
    CircleX = New_XTRt中国设计秀
    Call UserControl_ResizeTRt中国设计秀
  End IfTRt中国设计秀
End Property TRt中国设计秀
TRt中国设计秀
Property Get PosY() As IntegerTRt中国设计秀
  PosY = CircleYTRt中国设计秀
End Property TRt中国设计秀
TRt中国设计秀
Property Let PosY(ByVal New_Y As Integer)TRt中国设计秀
  If (New_Y < Shape1.Height / 2) Or _TRt中国设计秀
    (New_Y > UserControl.ScaleHeight - Shape1.Height / 2) ThenTRt中国设计秀
    MsgBox ("圆的Y值超出界限了")TRt中国设计秀
  ElseTRt中国设计秀
    CircleY = New_YTRt中国设计秀
    Call UserControl_ResizeTRt中国设计秀
  End IfTRt中国设计秀
End Property TRt中国设计秀
TRt中国设计秀
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)TRt中国设计秀
  CircleX = PropBag.ReadProperty("CircleX", Shape1.Width / 2) '将用户设置的值读出来TRt中国设计秀
  CircleY = PropBag.ReadProperty("CircleY", Shape1.Height / 2) '同上TRt中国设计秀
  Call UserControl_ResizeTRt中国设计秀
End Sub TRt中国设计秀
TRt中国设计秀
Private Sub UserControl_Resize()TRt中国设计秀
  Shape1.Move CircleX, CircleYTRt中国设计秀
End Sub TRt中国设计秀
TRt中国设计秀
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)TRt中国设计秀
  Call PropBag.WriteProperty("CircleX", CircleX, Shape1.Width / 2) '将用户设置的值保存TRt中国设计秀
  Call PropBag.WriteProperty("CircleY", CircleY, Shape1.Height / 2) '同上TRt中国设计秀
End Sub TRt中国设计秀
TRt中国设计秀
  麻雀虽小,五脏俱全。这个OCX控件完成的任务虽然简单,但是OCX控件的基本操作全都有喔! 有兴趣的朋友不妨一试。TRt中国设计秀

本文引用地址:/bc/article_61307.html
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明