我看一本VB书时,课后有这样一个问题:
    要求自定义一个控件,创建时需要一个TEXT控件和一个SHAPE控件,然后把SHAPE的FILLCOLOR属性设为蓝色,ActiveX控件的BACKCOLOR设为红色。然后在添加一个自定义的CLICKINRED事件。
    然后生成.ico的控件在新建的FORM窗体使用,要达到的效果是点击这个自定义控件的红色部分时弹出一个对话框,点击蓝色时则没有反应。    我现在的问题是不知道如何作判断。
    请高手指教,最后把代码写得能运行。谢谢!!

解决方案 »

  1.   

    这个很简单呀
    控件的代码如下Public Event CLICKINRED()
    Private Sub UserControl_Click()
        RaiseEvent CLICKINRED
    End Sub
    form中使用控件的代买如下
    Private Sub UserControl11_CLICKINRED()
        MsgBox "ok"
    End Sub如果你要把弹出对话框写死在控件里,那就这样
    Public Event CLICKINRED()
    Private Sub UserControl_Click()
        msgbox "ok"
    End Sub但建议还是在上层来处理,灵活性强
      

  2.   

    Private Sub UserControl_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
         If Point(X, Y) = shpBack.backcolor Then
          RaiseEvent Click
       End If
    End Sub
    判断当前的颜色 Point(X, Y)就是了.
    ---------------------------------------------------------
    Montaque==Digitalboy==Houyongfeng==Monkey
      

  3.   

    Option ExplicitPublic Event ClickInRed()Private Sub UserControl_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button <> 2 Then Exit Sub
        
        If X >= shp.Left And X <= shp.Width + shp.Left And Y >= shp.Top And Y <= shp.Height + shp.Top Then
           Exit Sub
        End If
        RaiseEvent ClickInRed
        MsgBox "hi"
    End Sub
      

  4.   

    还用判断吗?点击红色是触发触发的usercontrol的click事件,而点击蓝色触发的是Shape的click事件,这不是很容易区分吗?根本不需要做什么判断。
      

  5.   

    是呀,是呀点击红色是触发触发的usercontrol的click事件,而点击蓝色触发的是Shape的click事件,这不是很容易区分吗?
      

  6.   

    shape控件没有事件
    将shape改为label即可满足你的要求
      

  7.   

    楼上的楼上2位,打开一个工程自己是试试看,你给我弄一个Shape_Click()事件出来看看,没做过就不要自以为是。
      

  8.   

    楼上的够狠,我之后试过了,是不行,但也不至于说的这么狠吧isme()的方法恐怕不行,luosha80 (影子)只所以用shape,是想得到圆角矩形和圆形的蓝色区域如果是这样的话,打印机的方法也不成了,SHAPE的区域>=SHAPE中蓝色部分的面积
      

  9.   

    每个形状都有一个数学的表达式。利用它,并将shape的中心定义成当前坐标,一切就解决。