⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csliderxp.cls

📁 进销存管理系统
💻 CLS
📖 第 1 页 / 共 2 页
字号:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "cSliderXP"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False

' **********************************************************************
'  描  述:巨牛的XP风格控件引擎,非常厉害
'  Play78.com : 网站导航,源码之家,绝对开源
'  海阔天空收集整理
'  主站地址:http://www.play78.com/
'  源码下载地址:http://www.play78.com/blog
'  图片下在地址:http://www.play78.com/pic
'  QQ:13355575
'  e-mail:hglai@eyou.com
'  编写日期:2005年08月24日
' **********************************************************************

'--------------------------------------------------------------------------------------------------'
'--------------------------------------------------------------------------------------------------'
'                                                                                                  '
'                                            cSliderXP.cls                                         '
'                                            Version 1.00                                          '
'                                                                                                  '
'                           AUTHOR:    MARIO ALBERTO FLORES GONZALEZ                               '
'                                                                                                  '
'                                     CD.JUAREZ CHIHUAHUA MEXICO                                   '
'                                                                                                  '
'                                    sistec_de_juarez@hotmail.com                                  '
'                                                                                                  '
'--------------------------------------------------------------------------------------------------'
'--------------------------------------------------------------------------------------------------'


' !!!!! This Version of cSliderXP Doesn't Fully Supports Smaller Sliders...The have some Drawing Problems :(



Option Explicit
Private m_hWnd As Long
Private m_Hdc As Long
Private m_Min As Integer
Private m_Max As Integer
Private m_Val As Integer           '//--- Control Value
Private m_Ort As Byte              '//--- Control Orientation
Private m_Tsl As Byte              '//--- Control TickStyle
Private m_Stt As ControlState      '//--- Control State
Private AreaRgn As RECT
Private TrackRect As RECT


Private Enum cDirection
    Left_TO_Right = 0
    Right_TO_Left = 1
    Top_TO_Bottom = 2
    Bottom_TO_Top = 3
End Enum

Private AB As Long
Private AT As Long   '//---Area Regions ..
Private AL As Long
Private AR As Long

Private TT As Long   '//---Area Regions ..
Private TL As Long
Private TR As Long


'//-- Border Colors
Dim Col1 As Long, Col2 As Long, Col3 As Long, Col4 As Long, Col5 As Long, Col6 As Long
'//-- Inner Colors
Dim ICol1 As Long, ICol2 As Long, ICol3 As Long, ICol4 As Long, ICol5 As Long, ICol6 As Long, ICol7 As Long

'====================================================================================================
'====================================================================================================

'                            DRAW A STYLED XP SLIDER ...NOT EXACTLY BUT CLOSE .. ;)

'====================================================================================================
'====================================================================================================

Public Sub DrawSlider()
    
    SendMessageLong m_hWnd, TBM_GETCHANNELRECT, 0, TrackRect
    SendMessageLong m_hWnd, TBM_GETTHUMBRECT, 0, AreaRgn
    
    AB = AreaRgn.Bottom: AT = AreaRgn.Top: AR = AreaRgn.Right: AL = AreaRgn.Left
    TT = TrackRect.Top: TR = TrackRect.Right: TL = TrackRect.Left
    
    Call DrawSlideLine
    Call DrawSliderMod
    Call DrawCenter
    Call SelectSliderPos
   
   
End Sub

'====================================================================================================
'====================================================================================================

'                                SELECT THE SLIDER ROTATION AND STYLE

'====================================================================================================
'====================================================================================================

Private Sub SelectSliderPos()

Select Case m_Tsl

      
      Case 1
                If m_Ort = 0 Then
                    DrawSliderBody (Bottom_TO_Top)
                Else
                    DrawSliderBody (Right_TO_Left)
                End If
                
      Case 0, 3
                If m_Ort = 0 Then
                    DrawSliderBody (Top_TO_Bottom)
                Else
                    DrawSliderBody (Left_TO_Right)
                End If
      Case 2
                Call DrawSqR
      
      Case Else
           'Nothing
   
   End Select

End Sub

'====================================================================================================
'====================================================================================================

'                                DRAW THE XP STYLED CHANNEL TRACK ....

'            MOST OF THE LINES ARE ""SetPixelV Function"" TO DRAW CORNERS OF THE TRACKS

'====================================================================================================
'====================================================================================================

Private Sub DrawSlideLine()
 
    
    If m_Ort = 0 Then
        
        DrawLine TL, TT, TR, TT, m_Hdc, GetLngColor(&H999C9D)
        DrawLine TL, TT + 1, TR, TT + 1, m_Hdc, GetLngColor(&HE9F1F2)
        DrawLine TL, TT + 2, TR, TT + 2, m_Hdc, GetLngColor(&HE0EDF0)
        DrawLine TL, TT + 3, TR, TT + 3, m_Hdc, GetLngColor(vbWhite)
        
        Call SetPixelV(m_Hdc, TL, TT, GetLngColor(&HD5DCDD))
        Call SetPixelV(m_Hdc, TL + 1, TT, GetLngColor(&HBCC0C0))
        Call SetPixelV(m_Hdc, TL, TT + 1, GetLngColor(&HADB1B2))
        Call SetPixelV(m_Hdc, TL + 1, TT + 1, GetLngColor(&HC7CDCE))
        Call SetPixelV(m_Hdc, TL, TT + 2, GetLngColor(&H999C9C))
        Call SetPixelV(m_Hdc, TL + 1, TT + 2, GetLngColor(&HD5D6D6))
        Call SetPixelV(m_Hdc, TL, TT + 3, GetLngColor(&HCFD3D4))
        Call SetPixelV(m_Hdc, TL + 1, TT + 3, GetLngColor(&HBDC2C3))
         
    Else
    
         'TBM_GETCHANNELRECT Returns Horizontal Rects'..Yust Invert them ;)   TOP=LEFT ,LEFT=TOP,.. ETC...
         DrawLine TT, TL, TT, TR, m_Hdc, GetLngColor(&H999C9D)
         DrawLine TT + 1, TL, TT + 1, TR, m_Hdc, GetLngColor(&HE9F1F2)
         DrawLine TT + 2, TL, TT + 2, TR, m_Hdc, GetLngColor(&HE0EDF0)
         DrawLine TT + 3, TL, TT + 3, TR, m_Hdc, GetLngColor(vbWhite)

         Call SetPixelV(m_Hdc, TT, TL, GetLngColor(&HD5DCDD))
         Call SetPixelV(m_Hdc, TT + 1, TL, GetLngColor(&HBCC0C0))
         Call SetPixelV(m_Hdc, TT, TL + 1, GetLngColor(&HADB1B2))
         Call SetPixelV(m_Hdc, TT + 1, TL + 1, GetLngColor(&HC7CDCE))
         Call SetPixelV(m_Hdc, TT, TR - 1, GetLngColor(&HD5DCDD))
         Call SetPixelV(m_Hdc, TT + 1, TR - 1, GetLngColor(&HBCC0C0))
         Call SetPixelV(m_Hdc, TT, TR - 2, GetLngColor(&HADB1B2))
         Call SetPixelV(m_Hdc, TT + 1, TR - 2, GetLngColor(&HC7CDCE))
       
    End If

        DrawTicks
  
End Sub

'====================================================================================================
'====================================================================================================

'                                   DRAW THE SLIDER STATE MODE ....

'                          (SELECT COLORS DEPENDING ON THE CURRENT STATE OF CONTROL)

'====================================================================================================
'====================================================================================================


Private Sub DrawSliderMod()


    Select Case m_Stt

           Case C_Normal
            
                GoSub DefaultCornerColors
                ICol1 = &H76AC63: ICol2 = &H1FB621: ICol3 = &H18911A: ICol4 = &H59824B: ICol5 = &H64CE66: ICol6 = &H46C447: ICol7 = &H23B925
             
           Case C_Disabled
           
                GoSub DisabledCornerColors
                ICol1 = &HBAC7CA: ICol2 = vbWhite: ICol3 = &HD7E0E1: ICol4 = &HA9B6B9: ICol5 = &HC6D0D2: ICol6 = &HC1CCCE: ICol7 = vbWhite
          
           Case C_Over, C_Focus
            
                GoSub DefaultCornerColors
                ICol1 = &H7EABBA: ICol2 = &H35B4F9: ICol3 = &H2A8EC4: ICol4 = &H60828E: ICol5 = &H74CBFB: ICol6 = &H55C0FA: ICol7 = &H39B5F9
     
           Case C_Down
            
                GoSub DefaultCornerColors
                ICol1 = &H709E63: ICol2 = &H129522: ICol3 = &HE751B: ICol4 = &H55784B: ICol5 = &H5BB666: ICol6 = &H3BA748: ICol7 = &H129522
     
           
           Case Else
           'Nothing
    
    End Select


Exit Sub


DefaultCornerColors:
Col1 = &HCDC4B5: Col2 = &HB2A691: Col3 = &H928877: Col4 = &HC0C3C3: Col5 = &HD9DCDC: Col6 = &H887E6E
Return
DisabledCornerColors:
Col1 = &HC6D4D6: Col2 = &HBAC9CC: Col3 = &HADBCBF: Col4 = &HD9E2E3: Col5 = &HE2EBEC: Col6 = &HA9B8BB
Return

End Sub

'====================================================================================================
'====================================================================================================

'                                   DRAW THE SLIDER BODY ....

'====================================================================================================
'====================================================================================================

Private Sub DrawSliderBody(ByRef Dtn As cDirection)
Dim i As Integer

Dim PMX As Long          '//--Prox VAL
Dim FBM As Long          '//--FixedBottom
Dim DIF As Integer       '//--FLAG TO ROTATE X ANGLE THE SLIDER


Select Case Dtn

        
        
     Case Top_TO_Bottom, Bottom_TO_Top
 
        '=========================================================================================================
        'DRAW THE SLIDER.. 'DIF' IS THE FLAG TO ROTATE THE SLIDER UPSIDE DOWN OR UP DEPENDING ON THE TSL
          
        DIF = IIf(Dtn = Top_TO_Bottom, 0, 2)
        FBM = AB - 1 - ((AR - AL) / 2)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -