QQCheckBox.ctl
上传用户:yj36_1982
上传日期:2022-07-13
资源大小:63k
文件大小:18k
源码类别:

界面编程

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{27395F88-0C0C-101B-A3C9-08002B2F49FB}#1.1#0"; "PICCLP32.OCX"
  3. Begin VB.UserControl QQCheckBox 
  4.    Alignable       =   -1  'True
  5.    Appearance      =   0  'Flat
  6.    BackColor       =   &H80000005&
  7.    ClientHeight    =   4065
  8.    ClientLeft      =   0
  9.    ClientTop       =   0
  10.    ClientWidth     =   2340
  11.    FillStyle       =   0  'Solid
  12.    ScaleHeight     =   4065
  13.    ScaleWidth      =   2340
  14.    ToolboxBitmap   =   "QQCheckBox.ctx":0000
  15.    Begin PicClip.PictureClip pc 
  16.       Left            =   0
  17.       Top             =   480
  18.       _ExtentX        =   4128
  19.       _ExtentY        =   344
  20.       _Version        =   393216
  21.       Cols            =   12
  22.       Picture         =   "QQCheckBox.ctx":0312
  23.    End
  24.    Begin PicClip.PictureClip pcChoice 
  25.       Index           =   11
  26.       Left            =   0
  27.       Top             =   3360
  28.       _ExtentX        =   4128
  29.       _ExtentY        =   344
  30.       _Version        =   393216
  31.       Cols            =   12
  32.       Picture         =   "QQCheckBox.ctx":1B28
  33.    End
  34.    Begin PicClip.PictureClip pcChoice 
  35.       Index           =   10
  36.       Left            =   0
  37.       Top             =   3120
  38.       _ExtentX        =   4128
  39.       _ExtentY        =   344
  40.       _Version        =   393216
  41.       Cols            =   12
  42.       Picture         =   "QQCheckBox.ctx":333E
  43.    End
  44.    Begin PicClip.PictureClip pcChoice 
  45.       Index           =   2
  46.       Left            =   0
  47.       Top             =   1200
  48.       _ExtentX        =   4128
  49.       _ExtentY        =   344
  50.       _Version        =   393216
  51.       Cols            =   12
  52.       Picture         =   "QQCheckBox.ctx":4B54
  53.    End
  54.    Begin PicClip.PictureClip pcChoice 
  55.       Index           =   3
  56.       Left            =   0
  57.       Top             =   1440
  58.       _ExtentX        =   4128
  59.       _ExtentY        =   344
  60.       _Version        =   393216
  61.       Cols            =   12
  62.       Picture         =   "QQCheckBox.ctx":636A
  63.    End
  64.    Begin PicClip.PictureClip pcChoice 
  65.       Index           =   7
  66.       Left            =   0
  67.       Top             =   2400
  68.       _ExtentX        =   4128
  69.       _ExtentY        =   344
  70.       _Version        =   393216
  71.       Cols            =   12
  72.       Picture         =   "QQCheckBox.ctx":7B80
  73.    End
  74.    Begin PicClip.PictureClip pcChoice 
  75.       Index           =   0
  76.       Left            =   0
  77.       Top             =   720
  78.       _ExtentX        =   4128
  79.       _ExtentY        =   344
  80.       _Version        =   393216
  81.       Cols            =   12
  82.       Picture         =   "QQCheckBox.ctx":9396
  83.    End
  84.    Begin VB.PictureBox p 
  85.       Appearance      =   0  'Flat
  86.       AutoSize        =   -1  'True
  87.       BackColor       =   &H80000005&
  88.       BorderStyle     =   0  'None
  89.       ForeColor       =   &H80000008&
  90.       Height          =   240
  91.       Left            =   0
  92.       ScaleHeight     =   16
  93.       ScaleMode       =   3  'Pixel
  94.       ScaleWidth      =   16
  95.       TabIndex        =   0
  96.       Top             =   0
  97.       Width           =   240
  98.    End
  99.    Begin VB.Timer Timer1 
  100.       Enabled         =   0   'False
  101.       Interval        =   10
  102.       Left            =   1920
  103.       Top             =   0
  104.    End
  105.    Begin PicClip.PictureClip pcChoice 
  106.       Index           =   6
  107.       Left            =   0
  108.       Top             =   2160
  109.       _ExtentX        =   4128
  110.       _ExtentY        =   344
  111.       _Version        =   393216
  112.       Cols            =   12
  113.       Picture         =   "QQCheckBox.ctx":ABAC
  114.    End
  115.    Begin PicClip.PictureClip pcChoice 
  116.       Index           =   1
  117.       Left            =   0
  118.       Top             =   930
  119.       _ExtentX        =   4763
  120.       _ExtentY        =   397
  121.       _Version        =   393216
  122.       Cols            =   12
  123.       Picture         =   "QQCheckBox.ctx":C3C2
  124.    End
  125.    Begin PicClip.PictureClip pcChoice 
  126.       Index           =   4
  127.       Left            =   0
  128.       Top             =   1680
  129.       _ExtentX        =   4128
  130.       _ExtentY        =   344
  131.       _Version        =   393216
  132.       Cols            =   12
  133.       Picture         =   "QQCheckBox.ctx":E3B8
  134.    End
  135.    Begin PicClip.PictureClip pcChoice 
  136.       Index           =   8
  137.       Left            =   0
  138.       Top             =   2640
  139.       _ExtentX        =   4128
  140.       _ExtentY        =   344
  141.       _Version        =   393216
  142.       Cols            =   12
  143.       Picture         =   "QQCheckBox.ctx":FBCE
  144.    End
  145.    Begin PicClip.PictureClip pcChoice 
  146.       Index           =   12
  147.       Left            =   0
  148.       Top             =   3600
  149.       _ExtentX        =   4128
  150.       _ExtentY        =   344
  151.       _Version        =   393216
  152.       Cols            =   12
  153.       Picture         =   "QQCheckBox.ctx":113E4
  154.    End
  155.    Begin PicClip.PictureClip pcChoice 
  156.       Index           =   5
  157.       Left            =   0
  158.       Top             =   1920
  159.       _ExtentX        =   4128
  160.       _ExtentY        =   344
  161.       _Version        =   393216
  162.       Cols            =   12
  163.       Picture         =   "QQCheckBox.ctx":12BFA
  164.    End
  165.    Begin PicClip.PictureClip pcChoice 
  166.       Index           =   13
  167.       Left            =   0
  168.       Top             =   3840
  169.       _ExtentX        =   4128
  170.       _ExtentY        =   344
  171.       _Version        =   393216
  172.       Cols            =   12
  173.       Picture         =   "QQCheckBox.ctx":14410
  174.    End
  175.    Begin PicClip.PictureClip pcChoice 
  176.       Index           =   9
  177.       Left            =   0
  178.       Top             =   2880
  179.       _ExtentX        =   4128
  180.       _ExtentY        =   344
  181.       _Version        =   393216
  182.       Cols            =   12
  183.       Picture         =   "QQCheckBox.ctx":15C26
  184.    End
  185.    Begin VB.Label lbl 
  186.       Appearance      =   0  'Flat
  187.       AutoSize        =   -1  'True
  188.       BackColor       =   &H80000005&
  189.       BackStyle       =   0  'Transparent
  190.       Caption         =   "www.qq.com"
  191.       ForeColor       =   &H80000008&
  192.       Height          =   180
  193.       Left            =   360
  194.       TabIndex        =   1
  195.       Top             =   0
  196.       Width           =   900
  197.    End
  198. End
  199. Attribute VB_Name = "QQCheckBox"
  200. Attribute VB_GlobalNameSpace = False
  201. Attribute VB_Creatable = True
  202. Attribute VB_PredeclaredId = False
  203. Attribute VB_Exposed = False
  204. ' **********************************************************************
  205. '  描  述:一组QQ风格控件
  206. '  由本人收集整理  http://www.qq.com
  207. ' **********************************************************************
  208. Option Explicit
  209. Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINT_API) As Long                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          'Aki
  210. Private Declare Function ScreenToClient Lib "user32" (ByVal hWnd As Long, lpPoint As POINT_API) As Long
  211. Private Type POINT_API
  212.     x As Long
  213.     y As Long
  214. End Type
  215. Public Enum State
  216.     Unchecked = 0
  217.     Checked = 1
  218.     Mixed = 2
  219. End Enum
  220. Public Enum PictCheckBox
  221.     XP_Default = 0
  222.     QQ_Normal = 1
  223.     XP_BlackWhite = 2
  224.     XP_Blue = 3
  225.     XP_Disco = 4
  226.     XP_Green = 5
  227.     XP_HighPass = 6
  228.     XP_Lily = 7
  229.     XP_MidlleAges = 8
  230.     XP_Orange = 9
  231.     XP_Red = 10
  232.     XP_Solarize = 11
  233.     XP_Spectrum = 12
  234.     XP_Yellow = 13
  235. End Enum
  236. Dim mPicDefault As PictCheckBox
  237. Dim mPic As PictCheckBox
  238. Const defPic = PictCheckBox.XP_Default
  239. Dim mFont As Font
  240. Dim mValue As State
  241. Dim mBackColor As OLE_COLOR
  242. Dim mForeColor As OLE_COLOR
  243. Const defValue = State.Unchecked
  244. Const defBackColor = vbButtonFace
  245. Const defForeColor = vbBlack
  246. Dim chVal, btnDown As Integer
  247. Event Click()
  248. Event KeyDown(KeyCode As Integer, Shift As Integer)
  249. Event KeyPress(KeyAscii As Integer)
  250. Event KeyUp(KeyCode As Integer, Shift As Integer)
  251. Event MouseOut()
  252. Event MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  253. Event MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
  254. Event MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  255. Private Sub UserControl_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  256.     RaiseEvent MouseUp(Button, Shift, x, y)
  257.         btnDown = 0
  258. End Sub
  259. Private Sub UserControl_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  260.     If Enabled = False Then Exit Sub
  261.         If mValue = Checked Then
  262.             p.Picture = pc.GraphicCell(6)
  263.                 ElseIf mValue = Mixed Then
  264.                     p.Picture = pc.GraphicCell(10)
  265.                         ElseIf mValue = Unchecked Then
  266.                     p.Picture = pc.GraphicCell(2)
  267.                 End If
  268.             btnDown = 1
  269.         RaiseEvent MouseDown(Button, Shift, x, y)
  270. End Sub
  271. Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
  272.     If Enabled = False Then Exit Sub
  273.         If p.Picture = pc.GraphicCell(chVal) Then Exit Sub 'No reason to came in all the time
  274.            If btnDown = 1 Then Exit Sub
  275.             Timer1.Enabled = True
  276.                 If mValue = Checked Then
  277.                     p.Picture = pc.GraphicCell(5)
  278.                         chVal = 5
  279.                             ElseIf mValue = Mixed Then
  280.                                 p.Picture = pc.GraphicCell(9)
  281.                                     chVal = 9
  282.                                 ElseIf mValue = Unchecked Then
  283.                             p.Picture = pc.GraphicCell(1)
  284.                         chVal = 1
  285.                 End If
  286.         RaiseEvent MouseMove(Button, Shift, x, y)
  287. End Sub
  288. Private Sub p_KeyDown(KeyCode As Integer, Shift As Integer)
  289.     RaiseEvent KeyDown(KeyCode, Shift)
  290. End Sub
  291. Private Sub p_KeyPress(KeyAscii As Integer) 'Like Sub MouseDown(just using KeyPress)
  292.     If KeyAscii <> vbKeySpace Then Exit Sub 'only "space" can come in
  293.            RaiseEvent KeyPress(KeyAscii)
  294.               RaiseEvent Click
  295.                    Call UserControl_MouseDown(1, 0, 0, 0)
  296.     End Sub
  297. Private Sub p_KeyUp(KeyCode As Integer, Shift As Integer) 'Like MouseUp
  298.     If KeyCode <> vbKeySpace Then Exit Sub ' and come out
  299.        RaiseEvent KeyUp(KeyCode, Shift)
  300.            Call UserControl_Click 'we didn't call MouseUp 'cause he will not change the picture
  301.                btnDown = 0 'this is also in sub MouseUp
  302. End Sub
  303. Private Sub p_AccessKeyPress(KeyAscii As Integer)
  304.   RaiseEvent Click
  305. End Sub
  306. Private Sub lbl_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  307.     Call UserControl_MouseDown(Button, Shift, x, y)
  308. End Sub
  309. Private Sub lbl_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
  310.     Call UserControl_MouseMove(Button, Shift, x, y)
  311. End Sub
  312. Private Sub lbl_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  313.     Call UserControl_MouseUp(Button, Shift, x, y)
  314. End Sub
  315. Private Sub p_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  316.     Call UserControl_MouseDown(Button, Shift, x, y)
  317. End Sub
  318. Private Sub p_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
  319. Call UserControl_MouseMove(Button, Shift, x, y)
  320. End Sub
  321. Private Sub p_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  322.     Call UserControl_MouseUp(Button, Shift, x, y)
  323. End Sub
  324. Private Sub lbl_Change()
  325.     UserControl_Resize
  326. End Sub
  327. Private Sub lbl_Click()
  328.     Call UserControl_Click
  329. End Sub
  330. Private Sub p_Click()
  331.     UserControl_Click
  332. End Sub
  333. Private Sub UserControl_Click()
  334.     RaiseEvent Click
  335.         If mValue = Checked Then
  336.             Value = Unchecked
  337.                 ElseIf mValue = Unchecked Then
  338.                     Value = Checked
  339.                 ElseIf mValue = Mixed Then
  340.             Value = Unchecked
  341.         End If
  342.     DisablePc
  343. End Sub
  344. Private Sub UserControl_Initialize()
  345.     pc.Picture = pcChoice(3).Picture
  346.     DisablePc
  347.     UserControl_Resize
  348.     UserControl.BackColor = mBackColor
  349.     chVal = 1
  350. End Sub
  351. Private Sub UserControl_InitProperties()
  352.     Enabled = True
  353.     BackColor = defBackColor
  354.     CheckBoxLook = QQ_Normal
  355.     Value = Unchecked
  356.     Caption = "www.qq.com"
  357.     Set Font = UserControl.Ambient.Font
  358.     ForeColor = defForeColor
  359. End Sub
  360. Private Sub UserControl_Resize()
  361.     UserControl.ScaleMode = 1
  362.     p.Height = 210
  363.     p.Width = 210
  364.     p.Left = 0
  365.     p.Top = (UserControl.Height - p.Height)  2
  366.     lbl.Top = (UserControl.Height - lbl.Height)  2
  367.     lbl.Left = 240
  368. End Sub
  369. Private Function DisablePc()
  370.     If Enabled = True Then
  371.         If mValue = Checked Then
  372.             p.Picture = pc.GraphicCell(4)
  373.                 ElseIf mValue = Mixed Then
  374.                     p.Picture = pc.GraphicCell(8)
  375.                 ElseIf mValue = Unchecked Then
  376.             p.Picture = pc.GraphicCell(0)
  377.         End If
  378.             Else: EnablePc
  379.     End If
  380. End Function
  381. Private Function EnablePc()
  382.     If mValue = Checked Then
  383.         p.Picture = pc.GraphicCell(7)
  384.             ElseIf mValue = Mixed Then
  385.                 p.Picture = pc.GraphicCell(11)
  386.             ElseIf mValue = Unchecked Then
  387.         p.Picture = pc.GraphicCell(3)
  388.     End If
  389. End Function
  390. Private Sub DoIt(z As Integer)
  391.     pc.Picture = pcChoice(z).Picture
  392. End Sub
  393. Private Sub CheckEnabled()
  394.     If Enabled = False Then
  395.         EnablePc
  396.             lbl.ForeColor = &H80000011
  397.                 Timer1.Enabled = False
  398.             Else: DisablePc
  399.         lbl.ForeColor = mForeColor
  400.     End If
  401. End Sub
  402. Private Sub p_GotFocus() 'in case that you move with key "Tab" or mouse click, picure p get focus
  403.     Call UserControl_MouseMove(0, 0, 0, 0)
  404.         Timer1.Enabled = False 'timer must be disabled 'cause we will not see the change
  405. End Sub
  406. Private Sub p_LostFocus() 'here p losts focus and must change picture
  407.     chVal = 11 'must be done 'cause else will not change the picture
  408.         Call UserControl_MouseMove(0, 0, 0, 0)
  409. End Sub
  410. Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  411.     Enabled = PropBag.ReadProperty("Enabled", True)
  412.     CheckBoxLook = PropBag.ReadProperty("CheckBoxLook", mPicDefault)
  413.     Value = PropBag.ReadProperty("Value", defValue)
  414.     Caption = PropBag.ReadProperty("Caption", "CheckBox1")
  415.     BackColor = PropBag.ReadProperty("BackColor", defBackColor)
  416.     Set Font = PropBag.ReadProperty("Font", UserControl.Ambient.Font)
  417.     ForeColor = PropBag.ReadProperty("ForeColor", defForeColor)
  418. End Sub
  419. Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  420.     Call PropBag.WriteProperty("Enabled", UserControl.Enabled, True)
  421.     Call PropBag.WriteProperty("CheckBoxLook", mPic, defPic)
  422.     Call PropBag.WriteProperty("Value", mValue, defValue)
  423.     Call PropBag.WriteProperty("Caption", lbl.Caption, "CheckBox")
  424.     Call PropBag.WriteProperty("BackColor", mBackColor, defBackColor)
  425.     Call PropBag.WriteProperty("Font", mFont, UserControl.Ambient.Font)
  426.     Call PropBag.WriteProperty("ForeColor", mForeColor, defForeColor)
  427. End Sub
  428. Public Property Get Enabled() As Boolean
  429.     Enabled = UserControl.Enabled
  430. End Property
  431. Public Property Let Enabled(ByVal NewEnabled As Boolean)
  432.     UserControl.Enabled() = NewEnabled
  433.     CheckEnabled
  434.     PropertyChanged "Enabled"
  435. End Property
  436. Public Property Get CheckBoxLook() As PictCheckBox
  437.     CheckBoxLook = mPic
  438. End Property
  439. Public Property Let CheckBoxLook(ByVal NewCheckBoxLook As PictCheckBox)
  440.     mPic = NewCheckBoxLook
  441.     PropertyChanged "CheckBoxLook"
  442.     DoIt (mPic)
  443.     CheckEnabled
  444. End Property
  445. Public Property Get Value() As State
  446.     Value = mValue
  447. End Property
  448. Public Property Let Value(ByVal NewValue As State)
  449.     mValue = NewValue
  450.     DisablePc
  451.     PropertyChanged "Value"
  452. End Property
  453. Public Property Get Caption() As String
  454.     Caption = lbl.Caption
  455. End Property
  456. Public Property Let Caption(ByVal NewCaption As String)
  457.     lbl.Caption() = NewCaption
  458.     Call UserControl_Resize
  459.     PropertyChanged "Caption"
  460. End Property
  461. Public Property Get BackColor() As OLE_COLOR
  462.     BackColor = mBackColor
  463. End Property
  464. Public Property Let BackColor(ByVal NewBackColor As OLE_COLOR)
  465.     mBackColor = NewBackColor
  466.     PropertyChanged "BackColor"
  467.     UserControl.BackColor = mBackColor
  468. End Property
  469. Public Property Get Font() As Font
  470.     Set Font = mFont
  471. End Property
  472. Public Property Set Font(ByVal NewFont As Font)
  473.     Set mFont = NewFont
  474.     Set UserControl.Font = NewFont
  475.     Set lbl.Font = mFont
  476.     Call UserControl_Resize
  477.     PropertyChanged "Font"
  478. End Property
  479. Public Property Get ForeColor() As OLE_COLOR
  480.     ForeColor = mForeColor
  481. End Property
  482. Public Property Let ForeColor(ByVal NewForeColor As OLE_COLOR)
  483.     mForeColor = NewForeColor
  484.     CheckEnabled
  485.     PropertyChanged "ForeColor"
  486. End Property
  487. Private Sub Timer1_Timer()
  488.     Dim dot As POINT_API
  489.     UserControl.ScaleMode = 3 'must have this 'cause of x and y, to know how to calc
  490.     Call GetCursorPos(dot) 'get mouse position
  491.         ScreenToClient UserControl.hWnd, dot 'must have
  492.   
  493.   'checking if mouse is on our control by x and y
  494.             If dot.x < UserControl.ScaleLeft Or _
  495.                 dot.y < UserControl.ScaleTop Or _
  496.                     dot.x > (UserControl.ScaleLeft + UserControl.ScaleWidth) Or _
  497.                         dot.y > (UserControl.ScaleTop + UserControl.ScaleHeight) Then
  498.                         
  499.                             If btnDown = 1 Then Exit Sub 'in case that user clicked and did not
  500.                             DisablePc                            'left the button, this will prevent from calling
  501.                         Timer1.Enabled = False            ' DisablePc with no end
  502.                 RaiseEvent MouseOut
  503.             End If
  504. End Sub