Blame | Last modification | View Log
VERSION 5.00Begin VB.UserControl jjButtonAppearance = 0 'FlatAutoRedraw = -1 'TrueClientHeight = 570ClientLeft = 0ClientTop = 0ClientWidth = 1080ClipControls = 0 'FalseDefaultCancel = -1 'TrueFillColor = &H8000000F&ScaleHeight = 38ScaleMode = 3 'PixelScaleWidth = 72ToolboxBitmap = "jjButton.ctx":0000Begin VB.Timer tmrRedrawButtonEnabled = 0 'FalseInterval = 1Left = 705Top = -120EndBegin VB.Timer tmrRepeatEnabled = 0 'FalseInterval = 400Left = 60Top = 360EndBegin VB.PictureBox pic1Appearance = 0 'FlatAutoRedraw = -1 'TrueBackColor = &H80000005&BorderStyle = 0 'NoneClipControls = 0 'FalseForeColor = &H80000008&Height = 195Left = 105ScaleHeight = 13ScaleMode = 3 'PixelScaleWidth = 15TabIndex = 0Top = 105Visible = 0 'FalseWidth = 225EndBegin VB.Timer tmr1Enabled = 0 'FalseInterval = 50Left = 660Top = 360EndEndAttribute VB_Name = "jjButton"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = TrueAttribute VB_PredeclaredId = FalseAttribute VB_Exposed = FalseOption ExplicitDim OS(2) As String 'Operativsystem 0=versjonsnr. 1=tekstbeskrivelse, 2=MinorVersjonsnr.(Win200=0, XP=1)Dim NotOptionClick As BooleanDim TT As CTooltipDim ttInZone As BooleanPrivate HarFokus As BooleanPrivate mButton As Integer 'Brukes for å hindre høyreklikking i click eventDim IconW As Integer, IconH As Integer 'Ikons vidde og høydeDim IconL As Integer, IconT As Integer 'Ikons venstre og toppDim CaptionW As Integer, CaptionH As Integer 'Captions vidde og høydeDim CaptionL As Integer, CaptionT As Integer 'Captions venstre og toppDim ucWidth As Long, ucHeight As Long 'Kontrollens bredde og høydeDim BorderColor As LongDim DefaultColor As LongDim OverColor As LongDim DownColor As LongPublic Enum jjCopyBGSourcejj_Nonejj_Formjj_PictureBoxjj_BoxEnd EnumPublic Enum jjButtonColorjj_Standardjj_Hooverjj_Blåjj_Rødjj_Grønnjj_Guljj_Metalljj_Sølvjj_BlueFadejj_Avrundetjj_CheckBoxjj_Tabjj_Tekstjj_OptionBoxjj_XP2003End EnumPublic Enum jjIconAlignjj_Leftjj_Topjj_Rightjj_BottomEnd EnumPublic Enum jjModejj_Commandjj_Checkjj_OptionEnd Enum'Default Property Values:Const m_def_jjTabSelectedColor = &HE1451CConst m_def_jjTabBorderColor = &HB4A791Const m_def_CopyBGSource = 0Const m_def_Repeat = 0Const m_def_GruppeID = ""Const m_def_Value = 0Const m_def_Mode = jj_CommandConst m_def_jjToolTipTime = 5000Const m_def_jjToolTipStyle = 0Const m_def_jjToolTipIcon = 0Const m_def_jjToolTipHeader = ""Const m_def_jjTooltip = ""Const m_def_IconAlign = 0Const m_def_IconSpace = 2Const m_def_ForeColor = vbButtonTextConst m_def_BackColor = vbButtonFaceConst m_def_FocusRectangle = TrueConst m_def_Caption = "jjButton"Const m_def_jjButtonStyle = jj_Standard'Property Variables:Dim m_jjTabSelectedColor As OLE_COLORDim m_jjTabBorderColor As OLE_COLORDim m_CopyBGSource As IntegerDim m_CopyBGBoxName As ControlDim m_Repeat As BooleanDim m_GruppeID As StringDim m_Value As BooleanDim m_Mode As IntegerDim m_jjToolTipStyle As IntegerDim m_jjToolTipIcon As IntegerDim m_jjToolTipHeader As StringDim m_jjToolTip As StringDim m_jjToolTipTime As IntegerDim m_IconAlign As IntegerDim m_IconSpace As IntegerDim m_ForeColor As OLE_COLORDim m_BackColor As OLE_COLORDim m_IconDefault As StdPicturePrivate m_FocusRectangle As BooleanPrivate m_Caption As StringPrivate m_jjButtonStyle As Long'Event Declarations:Event DoubleClick(Button As Integer)Event Click() 'MappingInfo=UserControl,UserControl,-1,ClickAttribute Click.VB_MemberFlags = "200"Event KeyDown(KeyCode As Integer, Shift As Integer) 'MappingInfo=UserControl,UserControl,-1,KeyDownEvent KeyPress(KeyAscii As Integer) 'MappingInfo=UserControl,UserControl,-1,KeyPressEvent KeyUp(KeyCode As Integer, Shift As Integer) 'MappingInfo=UserControl,UserControl,-1,KeyUpEvent MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) 'MappingInfo=UserControl,UserControl,-1,MouseDownEvent MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) 'MappingInfo=UserControl,UserControl,-1,MouseMoveEvent MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) 'MappingInfo=UserControl,UserControl,-1,MouseUpPrivate Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As LongPrivate Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As LongPrivate Declare Function ReleaseCapture Lib "user32" () As LongPrivate Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As LongPrivate Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As LongPrivate Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As LongPrivate Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As LongPrivate Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As LongPrivate Declare Function FrameRgn Lib "gdi32" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long, ByVal nWidth As Long, ByVal nHeight As Long) As LongPrivate Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As LongPrivate Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As LongPrivate Declare Function PathToRegion Lib "gdi32" (ByVal hdc As Long) As LongPrivate Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As LongPrivate Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long'Private Declare Function SetBkColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As LongPrivate Declare Sub OleTranslateColor Lib "oleaut32.dll" (ByVal clr As Long, ByVal hpal As Long, ByRef lpcolorref As Long)Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As LongPrivate Const PS_SOLID = 0Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As LongPrivate Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As LongPrivate Declare Function RoundRect Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As LongPrivate Declare Function Rectangle Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate Declare Function FloodFill Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As LongPrivate Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As LongPrivate Declare Function SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As LongPrivate Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long'Flytte til et punkt og tegne linjerPrivate Type POINTAPIx As Longy As LongEnd TypePrivate Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As LongPrivate Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long'For å tegne ikoner og tekst i disabled statePrivate Const DST_PREFIXTEXT = &H2Private Const DST_ICON = &H3'Private Const DST_BITMAP = &H4Private Const DSS_NORMAL = &H0Private Const DSS_DISABLED = &H20Private Declare Function DrawState Lib "user32" Alias "DrawStateA" (ByVal hdc As Long, ByVal hBrush As Long, ByVal lpDrawStateProc As Long, ByVal lParam As Long, ByVal wParam As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal flags As Long) As LongPrivate Declare Function DrawStateText Lib "user32" Alias "DrawStateA" (ByVal hdc As Long, ByVal hBrush As Long, ByVal lpDrawStateProc As Long, ByVal lString As String, ByVal wParam As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal flags As Long) As Long'Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal hIcon As Long) As Long'Private Const DT_CENTER = &H1'Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long'Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long'Private Type LOGFONT ' used to create fonts' lfHeight As Long' lfWidth As Long' lfEscapement As Long' lfOrientation As Long' lfWeight As Long' lfItalic As Byte' lfUnderline As Byte' lfStrikeOut As Byte' lfCharSet As Byte' lfOutPrecision As Byte' lfClipPrecision As Byte' lfQuality As Byte' lfPitchAndFamily As Byte' lfFaceName As String * 32'End TypePrivate Type Oldfont ' used to create fontsName As StringSize As IntegerBold As IntegerItalic As IntegerStrikethru As IntegerUnderline As IntegerEnd TypeDim lOldFont As Oldfont'Tegner fokusrektangelPrivate Declare Function DrawFocusRect Lib "user32" (ByVal hdc As Long, lpRect As RECT) As LongPrivate Type RECTLeft As LongTop As LongRight As LongBottom As LongEnd Type'Alphablending'Private Declare Sub RtlMoveMemory Lib "kernel32.dll" (Destination As Any, Source As Any, ByVal Length As Long)'Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdc As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal hdc As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal BLENDFUNCT As Long) As Long'Const AC_SRC_ALPHA = &H1'Const AC_SRC_OVER = &H0'Private Type BLENDFUNCTION' BlendOp As Byte' BlendFlags As Byte' SourceConstantAlpha As Byte' AlphaFormat As Byte'End Type'For Triangel-fargefyllPrivate Type TRIANGEL_COLORColorLT As LongColorRT As LongColorLB As LongColorRB As LongEnd Type'For Gradient-fargefyllPrivate Type GRADIENT_COLORColorFrom As LongColorTo As LongEnd TypePrivate Type GRADIENT_TRIANGLEVertex1 As LongVertex2 As LongVertex3 As LongEnd TypePrivate Type TRIVERTEXx As Longy As LongRed As IntegerGreen As IntegerBlue As IntegerAlpha As IntegerEnd TypePrivate Type GRADIENT_RECTUpperLeft As LongLowerRight As LongEnd TypeConst GRADIENT_FILL_RECT_H As Long = &H0Const GRADIENT_FILL_RECT_V As Long = &H1Const GRADIENT_FILL_TRIANGLE As Long = &H2Private Declare Function GradientFillTriangle Lib "msimg32" Alias "GradientFill" (ByVal hdc As Long, pVertex As TRIVERTEX, ByVal dwNumVertex As Long, pMesh As GRADIENT_TRIANGLE, ByVal dwNumMesh As Long, ByVal dwMode As Long) As LongPrivate Declare Function GradientFill Lib "msimg32" (ByVal hdc As Long, pVertex As TRIVERTEX, ByVal dwNumVertex As Long, pMesh As GRADIENT_RECT, ByVal dwNumMesh As Long, ByVal dwMode As Long) As Long'Finn type operativsystemPrivate Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _(lpVersionInformation As OSVERSIONINFO) As LongPrivate Type OSVERSIONINFOdwOSVersionInfoSize As LongdwMajorVersion As LongdwMinorVersion As LongdwBuildNumber As LongdwPlatformId As LongszCSDVersion As String * 128 ' Maintenance string for PSS usageEnd TypeConst VER_PLATFORM_WIN32_NT = 2Const VER_PLATFORM_WIN32_WINDOWS = 1Const VER_PLATFORM_WIN32s = 0Private Function ShadeColor(lColor As Long, shadeOffset As Integer, lessBlue As Boolean, _Optional bFocusRect As Boolean, Optional bInvert As Boolean) As Long' Basically supply a value between -255 and +255. Positive numbers make' the passed color lighter and negative numbers make the color darkerDim valRGB(0 To 2) As Integer, I As IntegerCalcNewColor:valRGB(0) = (lColor And &HFF) + shadeOffsetvalRGB(1) = ((lColor And &HFF00&) / 255&) + shadeOffsetIf lessBlue ThenvalRGB(2) = (lColor And &HFF0000) / &HFF00&valRGB(2) = valRGB(2) + ((valRGB(2) * CLng(shadeOffset)) \ &HC0)ElsevalRGB(2) = (lColor And &HFF0000) / &HFF00& + shadeOffsetEnd IfFor I = 0 To 2If valRGB(I) > 255 Then valRGB(I) = 255If valRGB(I) < 0 Then valRGB(I) = 0If bInvert = True Then valRGB(I) = Abs(255 - valRGB(I))NextShadeColor = valRGB(0) + 256& * valRGB(1) + 65536 * valRGB(2)Erase valRGBIf bFocusRect = True And (ShadeColor = vbBlack Or ShadeColor = vbWhite) ThenshadeOffset = -shadeOffsetIf shadeOffset = 0 Then shadeOffset = 64GoTo CalcNewColorEnd IfEnd FunctionPrivate Function TranslateColor(aColor As OLE_COLOR) As LongDim newcolor As LongOleTranslateColor aColor, UserControl.Palette, newcolorTranslateColor = newcolorEnd FunctionPrivate Sub SetAcccessKey()Dim pos As Integerpos = InStr(1, m_Caption, "&")If pos ThenUserControl.AccessKeys = Mid$(m_Caption, pos + 1, 1)End IfEnd SubPrivate Sub DrawFocus(uHdc As Long)Dim r As RECTDim pnt As POINTAPI'Avbryt om fokusrektangel ikke er påIf m_FocusRectangle = False Then Exit SubSelect Case m_jjButtonStyleCase Is = jj_Metall, jj_Sølv, jj_BlueFade, jj_Avrundetr.Left = 5r.Top = 5r.Right = ucWidth - 6r.Bottom = ucHeight - 6SetTextColor uHdc, vbBlackDrawFocusRect uHdc, rCase Is = jj_CheckBox, jj_OptionBoxIf m_IconAlign = jj_Left Thenr.Left = 14r.Top = 0r.Right = UserControl.TextWidth(m_Caption) + 18 + m_IconSpacer.Bottom = 13Elser.Left = 0r.Top = 0r.Right = ucWidth - 14r.Bottom = 13End IfSetTextColor uHdc, vbBlackDrawFocusRect uHdc, rCase Is = jj_Standard, jj_Hoover, jj_Blå, jj_Rød, jj_Grønn, jj_Gul, jj_Tab, jj_XP2003r.Left = 5r.Top = 5r.Right = ucWidth - 5r.Bottom = ucHeight - 5SetTextColor uHdc, vbBlackDrawFocusRect uHdc, rEnd SelectUserControl.RefreshEnd SubPrivate Sub HighLight(Button As Integer, x As Single, y As Single, Aktiv As Boolean)'Button Buttonverdien i MouseMove, MouseDown, MouseUp'X Buttonverdien i MouseMove, MouseDown, MouseUp'Y Buttonverdien i MouseMove, MouseDown, MouseUp'Aktiv For å låse musebevegelser til denne kontrollDim HitTest As LongStatic EnGang As Boolean 'For at noe skal skje bare en gang for hver musebevegelseStatic EnGangB As BooleanDim pnt As POINTAPIDim BckCl As LongDim EtPos As IntegerDim hRgn As LongDim hBrush As LongDim StatusValue As IntegerOn Error Resume Next'Avbtyt om feil oppstårHitTest = UserControl.hwndIf Err.Number <> 0 Then Exit Sub'Diverse innstillingerBckCl = TranslateColor(m_BackColor)UserControl.ForeColor = TranslateColor(m_ForeColor)'Finn bredde/høyde på et evt. ikon'Konverter fra Himetric til PixelsIconW = UserControl.ScaleX(m_IconDefault.Width, vbHimetric, vbPixels)IconH = UserControl.ScaleY(m_IconDefault.Height, vbHimetric, vbPixels)'Finn teksten og bredde/høyde på denIf m_Caption <> "" ThenCaptionW = UserControl.TextWidth(m_Caption)CaptionH = UserControl.TextHeight(m_Caption)End If'Finn pixellengden til en "&" om det brukes hurtigtast i Caption og trekk fra på tekstviddenEtPos = InStr(1, m_Caption, "&")If EtPos > 0 ThenCaptionW = CaptionW - UserControl.TextWidth("&")End If'Finn plasseringspunkt for et evt. ikon'Om det er tekst medIf m_Caption <> "" ThenSelect Case m_IconAlignCase Is = jj_Top'Ikon over captionIconL = ucWidth \ 2 - (IconW \ 2)IconT = ucHeight \ 2 - (IconH \ 2) - (CaptionH \ 2) - m_IconSpaceCase Is = jj_Bottom'Ikon under captionIconL = ucWidth \ 2 - (IconW \ 2)IconT = ucHeight \ 2 - (IconW \ 2) + (CaptionH \ 2) + m_IconSpaceCase Is = jj_Left'Ikon til venstre for captionIconL = ucWidth \ 2 - (CaptionW \ 2) - (IconW \ 2) - m_IconSpaceIconT = ucHeight \ 2 - (IconH \ 2)Case Is = jj_Right'Ikon til høyre for captionIconL = ucWidth \ 2 + (CaptionW \ 2) - (IconW \ 2) + m_IconSpaceIconT = ucHeight \ 2 - (IconH \ 2)End Select'Uten tekstElseIconL = ucWidth \ 2 - (IconW \ 2)IconT = ucHeight \ 2 - (IconH \ 2)End If'Finn plasseringspunkt for en evt. tekst'Om det er ikon medIf IconW > 0 ThenSelect Case m_IconAlignCase Is = jj_Top'Ikon over captionCaptionL = ucWidth \ 2 - (CaptionW \ 2)CaptionT = ucHeight \ 2 - (CaptionH \ 2) + (IconH \ 2) + m_IconSpaceCase Is = jj_Bottom'Ikon under captionCaptionL = ucWidth \ 2 - (CaptionW \ 2)CaptionT = ucHeight \ 2 - (CaptionH \ 2) - (IconH \ 2) - m_IconSpaceCase Is = jj_Left'Ikon til venstre for captionCaptionL = ucWidth \ 2 - (CaptionW \ 2) + (IconW \ 2) + m_IconSpaceCaptionT = ucHeight \ 2 - (CaptionH \ 2)Case Is = jj_Right'Ikon til høyre for captionCaptionL = ucWidth \ 2 - (CaptionW \ 2) - (IconW \ 2) - m_IconSpaceCaptionT = ucHeight \ 2 - (CaptionH \ 2)End Select'Uten ikonElseCaptionL = ucWidth \ 2 - (CaptionW \ 2)CaptionT = ucHeight \ 2 - (CaptionH \ 2)End If'************ Farge på knappen *************Select Case m_jjButtonStyleCase Is = jj_Standard, jj_HooverDefaultColor = BckClBorderColor = RGB(255, 255, 255)OverColor = BckClDownColor = BckClCase Is = jj_BlåDefaultColor = BckClBorderColor = RGB(10, 36, 106)OverColor = RGB(182, 189, 210)DownColor = RGB(133, 146, 181)Case Is = jj_RødDefaultColor = BckClBorderColor = RGB(117, 0, 38)OverColor = RGB(282, 189, 210)DownColor = RGB(255, 136, 174)Case Is = jj_GrønnDefaultColor = BckClBorderColor = RGB(6, 94, 41)OverColor = RGB(182, 250, 210)DownColor = RGB(77, 242, 142)Case Is = jj_GulDefaultColor = BckClBorderColor = RGB(117, 114, 0)OverColor = RGB(255, 253, 176)DownColor = RGB(255, 251, 94)End Select'**************** Action ******************'********************************************With UserControl'------------ Når musen forlater knappen, og ved initiering ---------------'**************************************************************************If (x < 0) Or (y < 0) Or (x > ucWidth) Or (y > ucHeight) ThenIf Aktiv = True Then ReleaseCaptureIf ttInZone ThenttInZone = FalseTT.DestroyEnd IfEnGang = FalseEnGangB = FalsetmrRepeat.Interval = 400tmrRepeat.Enabled = False'Er det en jj_Check eller en jj_Option med Value=True tegnes den som inntrykketIf (m_Mode = jj_Check Or m_Mode = jj_Option) And m_Value = True ThenStatusValue = 2ElseStatusValue = 0End If'Tegn knappens utseendeSelect Case m_jjButtonStyleCase Is = jj_StandardCall TegnStandardKnapp(.hdc, StatusValue)Case Is = jj_HooverCall TegnHooverKnapp(.hdc, StatusValue)Case Is = jj_Blå, jj_Rød, jj_Grønn, jj_GulCall TegnFargetKnapp(.hdc, StatusValue)Case Is = jj_MetallCall TegnMetallKnapp(.hdc, StatusValue)Case Is = jj_SølvCall TegnSølvKnapp(.hdc, StatusValue)Case Is = jj_BlueFadeCall TegnBluefadeKnapp(.hdc, StatusValue)Case Is = jj_AvrundetCall TegnAvrundetKnapp(.hdc, StatusValue)Case Is = jj_CheckBoxCall TegnCheckboxKnapp(.hdc, 0)Case Is = jj_OptionBoxCall TegnOptionboxKnapp(.hdc, 0)Case Is = jj_TabCall TegnTabKnapp(.hdc, StatusValue)Case Is = jj_TekstCall TegnTekstKnapp(.hdc, StatusValue)Case Is = jj_XP2003Call TegnXP2003Knapp(.hdc, StatusValue)End SelectBitBlt .hdc, 0, 0, ucWidth, ucHeight, pic1.hdc, 0, 0, vbSrcCopy.RefreshIf HarFokus = True Then Call DrawFocus(.hdc)'---------------------- Når musen er over knappen -------------------------'**************************************************************************ElseIf Aktiv = True Then SetCapture .hwndIf EnGang = False ThenEnGang = TrueIf Not ttInZone ThenttInZone = TrueTT.Style = m_jjToolTipStyleTT.Icon = m_jjToolTipIconTT.Title = m_jjToolTipHeaderTT.TipText = m_jjToolTipTT.VisibleTime = m_jjToolTipTimeTT.Create .hwndEnd If'Er det en jj_Check eller en jj_Option med Value=True tegnes den som inntrykketIf (m_Mode = jj_Check Or m_Mode = jj_Option) And m_Value = True ThenStatusValue = 2ElseStatusValue = 1End If'Tegn knappens utseendeSelect Case m_jjButtonStyleCase Is = jj_StandardCall TegnStandardKnapp(.hdc, StatusValue)Case Is = jj_HooverCall TegnHooverKnapp(.hdc, StatusValue)Case Is = jj_Blå, jj_Rød, jj_Grønn, jj_GulCall TegnFargetKnapp(.hdc, StatusValue)Case Is = jj_MetallCall TegnMetallKnapp(.hdc, StatusValue)Case Is = jj_SølvCall TegnSølvKnapp(.hdc, StatusValue)Case Is = jj_BlueFadeCall TegnBluefadeKnapp(.hdc, StatusValue)Case Is = jj_AvrundetCall TegnAvrundetKnapp(.hdc, StatusValue)Case Is = jj_CheckBoxCall TegnCheckboxKnapp(.hdc, 1)Case Is = jj_OptionBoxCall TegnOptionboxKnapp(.hdc, 1)Case Is = jj_TabCall TegnTabKnapp(.hdc, 1)Case Is = jj_TekstCall TegnTekstKnapp(.hdc, StatusValue)Case Is = jj_XP2003Call TegnXP2003Knapp(.hdc, StatusValue)End SelectBitBlt .hdc, 0, 0, ucWidth, ucHeight, pic1.hdc, 0, 0, vbSrcCopy.RefreshIf HarFokus = True Then Call DrawFocus(.hdc)End If'------------- Om venstre musetast trykkes ned oppå knappen ---------------'**************************************************************************If Button = vbLeftButton ThenIf EnGangB = False ThenEnGangB = True'Tegn knappens utseendeSelect Case m_jjButtonStyleCase Is = jj_StandardCall TegnStandardKnapp(.hdc, 2)Case Is = jj_HooverCall TegnHooverKnapp(.hdc, 2)Case Is = jj_Blå, jj_Rød, jj_Grønn, jj_GulCall TegnFargetKnapp(.hdc, 2)Case Is = jj_MetallCall TegnMetallKnapp(.hdc, 2)Case Is = jj_SølvCall TegnSølvKnapp(.hdc, 2)Case Is = jj_BlueFadeCall TegnBluefadeKnapp(.hdc, 2)Case Is = jj_AvrundetCall TegnAvrundetKnapp(.hdc, 2)Case Is = jj_CheckBoxCall TegnCheckboxKnapp(.hdc, 2)Case Is = jj_OptionBoxCall TegnOptionboxKnapp(.hdc, 2)Case Is = jj_TabCall TegnTabKnapp(.hdc, 2)Case Is = jj_TekstCall TegnTekstKnapp(.hdc, 2)Case Is = jj_XP2003Call TegnXP2003Knapp(.hdc, 2)End SelectBitBlt .hdc, 0, 0, ucWidth, ucHeight, pic1.hdc, 0, 0, vbSrcCopy.RefreshIf HarFokus = True Then Call DrawFocus(.hdc)End IfEnd IfEnd IfEnd With'Denne er for å spare bruken av systemets GDI objekterSet pic1.Picture = NothingEnd SubPrivate Sub FadeTriangel(Farge As TRIANGEL_COLOR, jRect As RECT, Optional CheckBx As Boolean, Optional jhDc As Long)Dim Vert(3) As TRIVERTEXDim Tri(3) As GRADIENT_TRIANGLEDim f As IntegerDim rgbRed(3) As Long, rgbGreen(3) As Long, rgbBlue(3) As LongDim rHex(3) As String, gHex(3) As String, bHex(3) As StringFor f = 0 To 3Select Case fCase Is = 0'Konverter til RGBrgbRed(f) = Farge.ColorLT Mod 256rgbGreen(f) = ((Farge.ColorLT And &HFF00FF00) / 256)rgbBlue(f) = (Farge.ColorLT And &HFF0000) / 65536Case Is = 1'Konverter til RGBrgbRed(f) = Farge.ColorRT Mod 256rgbGreen(f) = ((Farge.ColorRT And &HFF00FF00) / 256)rgbBlue(f) = (Farge.ColorRT And &HFF0000) / 65536Case Is = 2'Konverter til RGBrgbRed(f) = Farge.ColorRB Mod 256rgbGreen(f) = ((Farge.ColorRB And &HFF00FF00) / 256)rgbBlue(f) = (Farge.ColorRB And &HFF0000) / 65536Case Is = 3'Konverter til RGBrgbRed(f) = Farge.ColorLB Mod 256rgbGreen(f) = ((Farge.ColorLB And &HFF00FF00) / 256)rgbBlue(f) = (Farge.ColorLB And &HFF0000) / 65536End Select'Gang RGB sin verdi med 256 for å tilpasse maksverdien til GradientFillTriangle sin maksverdi som er 65280rgbRed(f) = rgbRed(f) * 256rgbGreen(f) = rgbGreen(f) * 256rgbBlue(f) = rgbBlue(f) * 256'Konverter de nye verdiene til Hex verdierrHex(f) = "&h" & Hex(rgbRed(f))gHex(f) = "&h" & Hex(rgbGreen(f))bHex(f) = "&h" & Hex(rgbBlue(f))Next f'Venstre øverstVert(0).x = jRect.LeftVert(0).y = jRect.TopVert(0).Red = rHex(0)Vert(0).Green = gHex(0)Vert(0).Blue = bHex(0)Vert(0).Alpha = 0&'Høyre øverstVert(1).x = jRect.RightVert(1).y = jRect.TopVert(1).Red = rHex(1)Vert(1).Green = gHex(1)Vert(1).Blue = bHex(1)Vert(1).Alpha = 0&'Høyre nederstVert(2).x = jRect.RightVert(2).y = jRect.BottomVert(2).Red = rHex(2)Vert(2).Green = gHex(2)Vert(2).Blue = bHex(2)Vert(2).Alpha = 0&'Venstre nederstVert(3).x = jRect.LeftVert(3).y = jRect.BottomVert(3).Red = rHex(3)Vert(3).Green = gHex(3)Vert(3).Blue = bHex(3)Vert(3).Alpha = 0&Tri(0).Vertex1 = 0Tri(0).Vertex2 = 1Tri(0).Vertex3 = 2Tri(1).Vertex1 = 0Tri(1).Vertex2 = 2Tri(1).Vertex3 = 3Tri(2).Vertex1 = 1Tri(2).Vertex2 = 2Tri(2).Vertex3 = 3Tri(3).Vertex1 = 0Tri(3).Vertex2 = 1Tri(3).Vertex3 = 3'APIIf jhDc <> 0 ThenGradientFillTriangle jhDc, Vert(0), 4, Tri(0), 4, GRADIENT_FILL_TRIANGLEElseGradientFillTriangle UserControl.hdc, Vert(0), 4, Tri(0), 4, GRADIENT_FILL_TRIANGLEEnd If'UserControl.RefreshEnd SubPrivate Sub FadeGradient(Farge As GRADIENT_COLOR, X1 As Long, Y1 As Long, X2 As Long, Y2 As Long, Optional jhDc As Long)Dim gRect As GRADIENT_RECTDim Vert(1) As TRIVERTEXDim f As IntegerDim rgbRed(1) As Long, rgbGreen(1) As Long, rgbBlue(1) As LongDim rHex(1) As String, gHex(1) As String, bHex(1) As StringFor f = 0 To 1Select Case fCase Is = 0'Konverter FraFargen til RGBrgbRed(f) = Farge.ColorFrom Mod 256rgbGreen(f) = ((Farge.ColorFrom And &HFF00FF00) / 256)rgbBlue(f) = (Farge.ColorFrom And &HFF0000) / 65536Case Is = 1'Konverter TilFargen til RGBrgbRed(f) = Farge.ColorTo Mod 256rgbGreen(f) = ((Farge.ColorTo And &HFF00FF00) / 256)rgbBlue(f) = (Farge.ColorTo And &HFF0000) / 65536End Select'Gang RGB sin verdi med 256 for å tilpasse maksverdien til GradientFill sin maksverdi som er 65280rgbRed(f) = rgbRed(f) * 256rgbGreen(f) = rgbGreen(f) * 256rgbBlue(f) = rgbBlue(f) * 256'Konverter de nye verdiene til Hex verdierrHex(f) = "&h" & Hex(rgbRed(f))gHex(f) = "&h" & Hex(rgbGreen(f))bHex(f) = "&h" & Hex(rgbBlue(f))Next f'Fra-fargeVert(0).x = X1Vert(0).y = Y1Vert(0).Red = rHex(0)Vert(0).Green = gHex(0)Vert(0).Blue = bHex(0)Vert(0).Alpha = 0&'Til-fargeVert(1).x = X2Vert(1).y = Y2Vert(1).Red = rHex(1)Vert(1).Green = gHex(1)Vert(1).Blue = bHex(1)Vert(1).Alpha = 0&'Rektangelets ytterpunktergRect.UpperLeft = 0gRect.LowerRight = 1'APIIf jhDc <> 0 ThenGradientFill jhDc, Vert(0), 2, gRect, 1, GRADIENT_FILL_RECT_VElseGradientFill UserControl.hdc, Vert(0), 2, gRect, 1, GRADIENT_FILL_RECT_VEnd If'UserControl.RefreshEnd SubPrivate Sub tmr1_Timer()tmr1.Enabled = FalseCall HighLight(-1, -1, -1, True)End SubPrivate Sub tmrRedrawButton_Timer()'Refresher knappen 2 ganger når man kaller på kontrollens Refresh (Ikke Usercontrol.Refresh)'Dette må ofte gjøres når man har valgt å kopiere inn bakgrunn fra en PictureBox like etter oppstart'Eller om man endrer bakgrunnsbildetStatic Tell As IntegerDim f As IntegertmrRedrawButton.Interval = 60Tell = Tell + 1If Tell > 1 ThentmrRedrawButton.Interval = 1Tell = 0tmrRedrawButton.Enabled = FalseEnd IfCall HighLight(-1, -1, -1, False)End SubPrivate Sub tmrRepeat_Timer()RaiseEvent ClicktmrRepeat.Interval = 50End SubPrivate Sub UserControl_AccessKeyPress(KeyAscii As Integer)If Enabled ThenUserControl.SetFocus'Aktiviser Click bare om det er en standerknapp når den får fokus vi hurtigtaster'Click skal jo ikke utføres når hurtigtast brukes på option eller check knappIf m_Mode = jj_Command Or KeyAscii = 13 ThenmButton = vbLeftButtonCall UserControl_Click'Aktiviser Click om der er en jj_Tab i Option-modeElseIf m_Mode = jj_Option And m_jjButtonStyle = jj_Tab ThenmButton = vbLeftButtonCall UserControl_ClickEnd IfEnd IfEnd SubPrivate Sub UserControl_AmbientChanged(PropertyName As String)' On Error GoTo AbortCheck' Select Case PropertyName' Case "DisplayAsDefault" 'changing focus' If Ambient.DisplayAsDefault = True Then' UserControl.Parent.SetFocus' Else'' End If'' End Select'AbortCheck:End SubPrivate Sub UserControl_DblClick()' Typical Window buttons do not have a double click event. Each' double click event on a typical button is registered as 2 clicks' with 2 sets of MouseDown & MouseUp events. We simulate that tooDim mousePt As POINTAPI' another plus... other button routines out there may not pass the' true X,Y coordinates when firing a fake 2nd click eventGetCursorPos mousePtScreenToClient UserControl.hwnd, mousePtRaiseEvent DoubleClick(CInt(mButton)) ' added benefit/informationIf mButton = vbLeftButton Then' double clicked with left mouse button fire a mouse down eventCall UserControl_MouseDown(vbLeftButton, 0, CSng(mousePt.x), CSng(mousePt.y))' key variable. This flag indicates we will be sending a fake click eventmButton = -1Else' double clicked with middle/right mouse button, send this event onlyRaiseEvent MouseDown(vbLeftButton, 0, CSng(mousePt.x), CSng(mousePt.y))End IfEnd SubPrivate Sub UserControl_GotFocus()HarFokus = TrueCall DrawFocus(hdc)End SubPrivate Sub UserControl_Initialize()Set TT = New CTooltipCall FinnOsEnd Sub'Initialize Properties for User ControlPrivate Sub UserControl_InitProperties()Set UserControl.Font = Ambient.Fontm_Caption = Ambient.DisplayNamem_jjButtonStyle = m_def_jjButtonStylem_FocusRectangle = m_def_FocusRectangleSet m_IconDefault = LoadPicture("")m_BackColor = m_def_BackColorm_ForeColor = m_def_ForeColorm_IconAlign = m_def_IconAlignm_IconSpace = m_def_IconSpacem_jjToolTip = m_def_jjTooltipm_jjToolTipHeader = m_def_jjToolTipHeaderm_jjToolTipIcon = m_def_jjToolTipIconm_jjToolTipStyle = m_def_jjToolTipStylem_jjToolTipTime = m_def_jjToolTipTimem_Mode = m_def_Modem_Value = m_def_Valuem_GruppeID = m_def_GruppeIDm_Repeat = m_def_Repeatm_CopyBGSource = m_def_CopyBGSourcem_jjTabBorderColor = m_def_jjTabBorderColorm_jjTabSelectedColor = m_def_jjTabSelectedColorEnd SubPrivate Sub UserControl_LostFocus()HarFokus = FalseClsCall HighLight(-1, -1, -1, False)End SubPrivate Sub UserControl_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)On Error Resume NextRaiseEvent MouseDown(Button, Shift, x, y)mButton = ButtonIf Button = vbLeftButton ThenjjButtonMouseLock = TruejjButtonAmbientName = Ambient.DisplayNameCall HighLight(Button, x, y, True)'Repeat funksjon på standerknapperIf m_Repeat = True ThenIf m_Mode = jj_Command ThentmrRepeat.Interval = 400tmrRepeat.Enabled = TrueEnd IfEnd If'DoEventsEnd IfEnd SubPrivate Sub UserControl_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)RaiseEvent MouseMove(Button, Shift, x, y)'For å hindre mouseover på andre kontroller om musetasten er trykket ned på en kontrollIf jjButtonMouseLock = True And jjButtonAmbientName = Ambient.DisplayName ThenCall HighLight(Button, x, y, True)ElseIf jjButtonMouseLock = True And jjButtonAmbientName <> Ambient.DisplayName ThenIf Button = 0 Then Call HighLight(Button, x, y, True)DoEventsExit SubElseIf jjButtonMouseLock = False And jjButtonAmbientName = "" ThenCall HighLight(Button, x, y, True)End If' If Not ttInZone Then' ttInZone = True' TT.TTStyle = m_jjToolTipStyle' TT.TTIcon = m_jjToolTipIcon' TT.TTTitle = m_jjToolTipHeader' TT.TTTipText = m_jjToolTip' TT.TTVisibleTime = m_jjToolTipTime' TT.TTCreate UserControl.hwnd' End IfDoEventsEnd Sub'Load property values from storagePrivate Sub UserControl_ReadProperties(PropBag As PropertyBag)UserControl.Enabled = PropBag.ReadProperty("Enabled", True)Set UserControl.Font = PropBag.ReadProperty("Font", Ambient.Font)m_Caption = PropBag.ReadProperty("Caption", "")m_jjButtonStyle = PropBag.ReadProperty("jjButtonStyle", m_def_jjButtonStyle)m_FocusRectangle = PropBag.ReadProperty("FocusRectangle", m_def_FocusRectangle)Call SetAcccessKeySet Picture = PropBag.ReadProperty("Picture", Nothing)Set m_IconDefault = PropBag.ReadProperty("IconDefault", Nothing)m_BackColor = PropBag.ReadProperty("BackColor", m_def_BackColor)m_ForeColor = PropBag.ReadProperty("ForeColor", m_def_ForeColor)m_IconAlign = PropBag.ReadProperty("IconAlign", m_def_IconAlign)m_IconSpace = PropBag.ReadProperty("IconSpace", m_def_IconSpace)m_jjToolTip = PropBag.ReadProperty("Tooltip", m_def_jjTooltip)m_jjToolTipHeader = PropBag.ReadProperty("jjToolTipHeader", m_def_jjToolTipHeader)m_jjToolTipIcon = PropBag.ReadProperty("jjToolTipIcon", m_def_jjToolTipIcon)m_jjToolTipStyle = PropBag.ReadProperty("jjToolTipStyle", m_def_jjToolTipStyle)m_jjToolTipTime = PropBag.ReadProperty("jjToolTipTime", m_def_jjToolTipTime)m_Mode = PropBag.ReadProperty("Mode", m_def_Mode)m_Value = PropBag.ReadProperty("Value", m_def_Value)m_GruppeID = PropBag.ReadProperty("GruppeID", m_def_GruppeID)m_Repeat = PropBag.ReadProperty("Repeat", m_def_Repeat)Set m_CopyBGBoxName = PropBag.ReadProperty("CopyBGBoxName", Nothing)m_CopyBGSource = PropBag.ReadProperty("CopyBGSource", m_def_CopyBGSource)m_jjTabBorderColor = PropBag.ReadProperty("jjTabBorderColor", m_def_jjTabBorderColor)m_jjTabSelectedColor = PropBag.ReadProperty("jjTabSelectedColor", m_def_jjTabSelectedColor)End SubPrivate Sub UserControl_Resize()'Om vi har valgt Checkbox-knapp må vi hindre at den blir mindre enn 13 pixler i høydeIf m_jjButtonStyle = jj_CheckBox Or m_jjButtonStyle = jj_OptionBox ThenUserControl.Height = 13 * 15End If'Bredden og høyden på knappen legges i disseucWidth = UserControl.ScaleWidthucHeight = UserControl.ScaleHeightpic1.Width = ucWidthpic1.Height = ucHeightClsCall HighLight(-1, -1, -1, False)Call SetAcccessKeyDoEventsEnd Sub'Write property values to storagePrivate Sub UserControl_WriteProperties(PropBag As PropertyBag)Call PropBag.WriteProperty("Enabled", UserControl.Enabled, True)Call PropBag.WriteProperty("Font", UserControl.Font, Ambient.Font)Call PropBag.WriteProperty("Caption", m_Caption, "")Call PropBag.WriteProperty("jjButtonStyle", m_jjButtonStyle, m_def_jjButtonStyle)Call PropBag.WriteProperty("FocusRectangle", m_FocusRectangle, m_def_FocusRectangle)Call PropBag.WriteProperty("Picture", Picture, Nothing)Call PropBag.WriteProperty("IconDefault", m_IconDefault, Nothing)Call PropBag.WriteProperty("BackColor", m_BackColor, m_def_BackColor)Call PropBag.WriteProperty("ForeColor", m_ForeColor, m_def_ForeColor)Call PropBag.WriteProperty("IconAlign", m_IconAlign, m_def_IconAlign)Call PropBag.WriteProperty("IconSpace", m_IconSpace, m_def_IconSpace)Call PropBag.WriteProperty("Tooltip", m_jjToolTip, m_def_jjTooltip)Call PropBag.WriteProperty("jjToolTipHeader", m_jjToolTipHeader, m_def_jjToolTipHeader)Call PropBag.WriteProperty("jjToolTipIcon", m_jjToolTipIcon, m_def_jjToolTipIcon)Call PropBag.WriteProperty("jjToolTipStyle", m_jjToolTipStyle, m_def_jjToolTipStyle)Call PropBag.WriteProperty("jjToolTipTime", m_jjToolTipTime, m_def_jjToolTipTime)Call PropBag.WriteProperty("Value", m_Value, m_def_Value)Call PropBag.WriteProperty("Mode", m_Mode, m_def_Mode)Call PropBag.WriteProperty("GruppeID", m_GruppeID, m_def_GruppeID)Call PropBag.WriteProperty("Repeat", m_Repeat, m_def_Repeat)Call PropBag.WriteProperty("CopyBGBoxName", m_CopyBGBoxName, Nothing)Call PropBag.WriteProperty("CopyBGSource", m_CopyBGSource, m_def_CopyBGSource)Call PropBag.WriteProperty("jjTabBorderColor", m_jjTabBorderColor, m_def_jjTabBorderColor)Call PropBag.WriteProperty("jjTabSelectedColor", m_jjTabSelectedColor, m_def_jjTabSelectedColor)End Sub'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MappingInfo=UserControl,UserControl,-1,EnabledPublic Property Get Enabled() As BooleanAttribute Enabled.VB_Description = "Returns/sets a value that determines whether an object can respond to user-generated events."Enabled = UserControl.EnabledEnd PropertyPublic Property Let Enabled(ByVal New_Enabled As Boolean)If New_Enabled = UserControl.Enabled Then Exit PropertyUserControl.Enabled() = New_EnabledPropertyChanged "Enabled"ClsCall HighLight(-1, -1, -1, False)DoEventsEnd Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MappingInfo=UserControl,UserControl,-1,FontPublic Property Get Font() As FontAttribute Font.VB_Description = "Returns a Font object."Attribute Font.VB_UserMemId = -512Set Font = UserControl.FontEnd PropertyPublic Property Set Font(ByVal New_Font As Font)Set UserControl.Font = New_FontPropertyChanged "Font"ClsCall HighLight(-1, -1, -1, False)DoEventsEnd Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MappingInfo=UserControl,UserControl,-1,RefreshPublic Sub Refresh()Attribute Refresh.VB_Description = "Forces a complete repaint of a object."UserControl.RefreshtmrRedrawButton.Enabled = TrueEnd SubPrivate Sub UserControl_Click()Dim b As ControlDim ID As StringIf mButton = vbLeftButton Then'Inn her om det er en jj_SjekkIf m_Mode = jj_Check Thenm_Value = IIf(m_Value, False, True)If m_Value = True ThenCall HighLight(1, -1, -1, True)RaiseEvent ClickDoEventsExit SubEnd IfEnd If'Inn her om det er en jj_OptionIf m_Mode = jj_Option ThenIf m_Value = True Then Exit Sub 'Avbryt om verdien allerede er TrueID = m_GruppeIDFor Each b In UserControl.ParentIf TypeOf b Is jjButton ThenIf b.GruppeID = ID ThenIf b.Value = True Thenb.Value = FalseEnd IfEnd IfEnd IfNextm_Value = TrueCall HighLight(-1, -1, -1, True)RaiseEvent ClickDoEventsExit SubEnd If'Inn her om det er en jj_CommandCall HighLight(-1, -1, -1, True)'DoEventsRaiseEvent ClickEnd IfEnd SubPrivate Sub UserControl_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 Or (KeyCode = 32 And m_Mode = jj_Check) Then 'EntermButton = vbLeftButtonUserControl_ClickmButton = -1ElseRaiseEvent KeyDown(KeyCode, Shift)End IfEnd SubPrivate Sub UserControl_KeyPress(KeyAscii As Integer)RaiseEvent KeyPress(KeyAscii)End SubPrivate Sub UserControl_KeyUp(KeyCode As Integer, Shift As Integer)RaiseEvent KeyUp(KeyCode, Shift)End SubPrivate Sub UserControl_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)jjButtonMouseLock = FalsejjButtonAmbientName = ""RaiseEvent MouseUp(Button, Shift, x, y)mButton = Buttontmr1.Enabled = TruetmrRepeat.Enabled = FalseEnd Sub'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=13,0,0,TekstPublic Property Get Caption() As StringAttribute Caption.VB_Description = "Tekst på knappen"Caption = m_CaptionEnd PropertyPublic Property Let Caption(ByVal New_Caption As String)m_Caption = New_CaptionClsCall HighLight(-1, -1, -1, False)Call SetAcccessKeyDoEventsPropertyChanged "Caption"End Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=7,0,0,0Public Property Get jjButtonStyle() As jjButtonColorAttribute jjButtonStyle.VB_Description = "Velg knappetype fra listen"jjButtonStyle = m_jjButtonStyleEnd PropertyPublic Property Let jjButtonStyle(ByVal New_jjButtonStyle As jjButtonColor)m_jjButtonStyle = New_jjButtonStylePropertyChanged "jjButtonStyle"'Fjern først en evt. regionSetWindowRgn UserControl.hwnd, 0, True'Sett til Checkbox-type om vi velger checkbox knappIf m_jjButtonStyle = jj_CheckBox ThenMe.Mode = jj_CheckEnd If'Sett til Optionbox-type om vi velger optionbox knappIf m_jjButtonStyle = jj_OptionBox ThenMe.Mode = jj_OptionEnd IfClsUserControl_ResizeCall HighLight(-1, -1, -1, False)DoEventsEnd Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=0,0,0,TruePublic Property Get FocusRectangle() As BooleanAttribute FocusRectangle.VB_Description = "Tegner fokusmerke på knappen når den har fokus"FocusRectangle = m_FocusRectangleEnd PropertyPublic Property Let FocusRectangle(ByVal New_FocusRectangle As Boolean)m_FocusRectangle = New_FocusRectanglePropertyChanged "FocusRectangle"End Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MappingInfo=UserControl,UserControl,-1,PicturePublic Property Get Picture() As PictureAttribute Picture.VB_Description = "Returns/sets a graphic to be displayed in a control."Set Picture = UserControl.PictureEnd PropertyPublic Property Set Picture(ByVal New_Picture As Picture)Set UserControl.Picture = New_PicturePropertyChanged "Picture"ClsCall HighLight(-1, -1, -1, False)DoEventsEnd Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=11,0,0,0Public Property Get IconDefault() As StdPictureAttribute IconDefault.VB_Description = "Stander ikon på knappen"Set IconDefault = m_IconDefaultEnd PropertyPublic Property Set IconDefault(ByVal New_IconDefault As StdPicture)Set m_IconDefault = New_IconDefaultPropertyChanged "IconDefault"ClsCall HighLight(-1, -1, -1, False)DoEventsEnd Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=10,0,0,0Public Property Get BackColor() As OLE_COLORBackColor = m_BackColorEnd PropertyPublic Property Let BackColor(ByVal New_BackColor As OLE_COLOR)m_BackColor = New_BackColorPropertyChanged "BackColor"ClsCall HighLight(-1, -1, -1, False)Call SetAcccessKeyDoEventsEnd Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=10,0,0,0Public Property Get ForeColor() As OLE_COLORAttribute ForeColor.VB_Description = "Returns/sets the foreground color used to display text and graphics in an object."ForeColor = m_ForeColorEnd PropertyPublic Property Let ForeColor(ByVal New_ForeColor As OLE_COLOR)m_ForeColor = New_ForeColorPropertyChanged "ForeColor"ClsCall HighLight(-1, -1, -1, False)Call SetAcccessKeyDoEventsEnd PropertyPrivate Sub TegnBluefadeKnapp(uHdc As Long, MousePos As Integer)On Error Resume NextDim Farge As GRADIENT_COLORDim hRgn As LongDim hBrush As LongDim hPen As LongDim Skyv As IntegerDim TempHdc As LongTempHdc = pic1.hdcSet pic1.Font = UserControl.FontSelect Case MousePos'MouseLeave og ved initieringCase Is = 0Farge.ColorFrom = vbWhiteFarge.ColorTo = RGB(61, 120, 209)Call FadeGradient(Farge, 0, 0, ucWidth, ucHeight / 2, TempHdc)Farge.ColorFrom = RGB(61, 120, 209)Farge.ColorTo = RGB(174, 202, 240)Call FadeGradient(Farge, 0, ucHeight / 2, ucWidth, ucHeight, TempHdc)'Marker region med Mørk blå rammehRgn = CreateRoundRectRgn(0, 0, ucWidth, ucHeight, 5, 5)hBrush = CreateSolidBrush(RGB(49, 86, 147))FrameRgn TempHdc, hRgn, hBrush, 1, 1SetWindowRgn UserControl.hwnd, hRgn, TrueDeleteObject hRgnDeleteObject hBrush'Et litt lysere RoundRect innenfor den ytre rammenhPen = CreatePen(PS_SOLID, 1, RGB(149, 183, 244))SelectObject TempHdc, hPenRoundRect TempHdc, 1, 1, ucWidth - 2, ucHeight - 2, 5, 5DeleteObject hPen'Sett noen punkter i hjørnene for at de skal se litt bedre utCall RundeHjorner(TempHdc)'AlphaBlending TempHdc, 50MousePos = -1Skyv = 0'MouseOverCase Is = 1Farge.ColorFrom = RGB(255, 255, 255)Farge.ColorTo = RGB(61, 120, 209)Call FadeGradient(Farge, 0, 0, ucWidth, ucHeight / 2, TempHdc)Farge.ColorFrom = RGB(61, 120, 209)Farge.ColorTo = RGB(174, 202, 240)Call FadeGradient(Farge, 0, ucHeight / 2, ucWidth, ucHeight, TempHdc)'Marker region med Mørk blå ramme (lik MouseLeave)hRgn = CreateRoundRectRgn(0, 0, ucWidth, ucHeight, 5, 5)hBrush = CreateSolidBrush(RGB(49, 86, 147))FrameRgn TempHdc, hRgn, hBrush, 1, 1DeleteObject hRgnDeleteObject hBrush'Et litt lysere RoundRect innenfor den ytre rammen (lik MouseLeave)hPen = CreatePen(PS_SOLID, 1, RGB(149, 183, 244))SelectObject TempHdc, hPenRoundRect TempHdc, 1, 1, ucWidth - 2, ucHeight - 2, 5, 5DeleteObject hPen'RoundRect for å indikere MouseOverhPen = CreatePen(PS_SOLID, 1, vbGreen)SelectObject TempHdc, hPenRoundRect TempHdc, 2, 2, ucWidth - 3, ucHeight - 3, 5, 5DeleteObject hPen'Sett noen punkter i hjørnene for at de skal se litt bedre utCall RundeHjorner(TempHdc)'AlphaBlending TempHdc, 50'MouseDownCase Is = 2Farge.ColorFrom = RGB(39, 89, 165)Farge.ColorTo = RGB(217, 234, 254)Call FadeGradient(Farge, 0, 0, ucWidth, ucHeight / 1.5, TempHdc)Farge.ColorFrom = RGB(217, 234, 254)Farge.ColorTo = RGB(61, 120, 209)Call FadeGradient(Farge, 0, ucHeight / 1.5, ucWidth, ucHeight, TempHdc)'Marker region med Mørk blå ramme (lik MouseLeave)hRgn = CreateRoundRectRgn(0, 0, ucWidth, ucHeight, 5, 5)hBrush = CreateSolidBrush(RGB(49, 86, 147))FrameRgn TempHdc, hRgn, hBrush, 1, 1SetWindowRgn UserControl.hwnd, hRgn, TrueDeleteObject hRgnDeleteObject hBrush'Et litt lysere RoundRect innenfor den ytre rammen (lik MouseLeave)hPen = CreatePen(PS_SOLID, 1, RGB(149, 183, 244))SelectObject TempHdc, hPenRoundRect TempHdc, 1, 1, ucWidth - 2, ucHeight - 2, 5, 5DeleteObject hPenMousePos = -1Skyv = 1End Select'AlphaBlending TempHdc, 50If MousePos <> 0 Then'Tegn Caption vanlig eller disabledSetTextColor TempHdc, m_ForeColorIf m_Caption <> "" ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), CaptionL + Skyv, CaptionT + Skyv, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End If'Tegn Ikon vanlig eller disabledIf m_IconDefault ThenIf UserControl.Enabled = True Thenpic1.PaintPicture m_IconDefault, IconL + Skyv, IconT + SkyvElseDrawState TempHdc, 0, 0, m_IconDefault.Handle, 0, IconL + Skyv, IconT + Skyv, 0, 0, DST_ICON Or DSS_DISABLEDEnd IfEnd If'UserControl.RefreshEnd IfEnd SubPrivate Sub TegnSølvKnapp(uHdc As Long, MousePos As Integer)On Error Resume NextDim rc As RECTDim Farge As TRIANGEL_COLORDim pnt As POINTAPIDim hRgn As LongDim hBrush As LongDim hPen As LongDim Skyv As IntegerDim TempHdc As LongTempHdc = pic1.hdcSet pic1.Font = UserControl.FontBorderColor = RGB(64, 64, 64)rc.Left = 0rc.Top = 0rc.Right = ucWidthrc.Bottom = ucHeightSelect Case MousePos'MouseLeave og ved initieringCase Is = 0'Tegn bakgrunnFarge.ColorLT = RGB(245, 245, 245)Farge.ColorRT = RGB(230, 240, 250)Farge.ColorRB = RGB(140, 150, 160)Farge.ColorLB = RGB(180, 190, 200)If UserControl.Enabled = False ThenFarge.ColorLT = RGB(245, 245, 245)Farge.ColorRT = RGB(240, 240, 240)Farge.ColorRB = RGB(150, 150, 150)Farge.ColorLB = RGB(190, 190, 190)BorderColor = RGB(150, 150, 150)End IfCall FadeTriangel(Farge, rc, True, TempHdc)'Lag path av strekene som her tegnesBeginPath TempHdc'To streker(venstre/topp)MoveToEx TempHdc, 0, ucHeight - 1, pntLineTo TempHdc, 0, 0LineTo TempHdc, ucWidth - 1, 0'To streker(høyre og bunn)MoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, ucHeightLineTo TempHdc, 0, ucHeight - 1'Avslutt pathEndPath TempHdc'Konverter path til regionhRgn = PathToRegion(TempHdc)hBrush = CreateSolidBrush(BorderColor)'Tegn ramme langs regionenFrameRgn TempHdc, hRgn, hBrush, 1, 1'Sett regionen til UserControlSetWindowRgn UserControl.hwnd, hRgn, True'Slett hendlerDeleteObject hRgnDeleteObject hBrush'Lag en penn, tegn to hvite streker (venstre/topp)hPen = CreatePen(PS_SOLID, 1, vbWhite)SelectObject TempHdc, hPenMoveToEx TempHdc, 0, ucHeight - 1, pntLineTo TempHdc, 0, 0LineTo TempHdc, ucWidth - 1, 0DeleteObject hPen'UserControl.RefreshMousePos = -1Skyv = 0'MouseOverCase Is = 1'Tegn bakgrunnFarge.ColorLT = RGB(240, 240, 240)Farge.ColorRT = RGB(230, 240, 250)Farge.ColorRB = RGB(180, 190, 200)Farge.ColorLB = RGB(210, 220, 230)Call FadeTriangel(Farge, rc, True, TempHdc)'Lag path av strekene som her tegnesBeginPath TempHdc'To streker(venstre/topp)MoveToEx TempHdc, 0, ucHeight - 1, pntLineTo TempHdc, 0, 0LineTo TempHdc, ucWidth - 1, 0'To streker(høyre og bunn)MoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, ucHeightLineTo TempHdc, 0, ucHeight - 1'Avslutt pathEndPath TempHdc'Konverter path til regionhRgn = PathToRegion(TempHdc)hBrush = CreateSolidBrush(BorderColor)'Tegn ramme langs regionenFrameRgn TempHdc, hRgn, hBrush, 1, 1'Sett regionen til UserControl'SetWindowRgn UserControl.hwnd, hRgn, True'Slett hendlerDeleteObject hRgnDeleteObject hBrush'Lag en penn, tegn to grå streker (venstre/topp)hPen = CreatePen(PS_SOLID, 1, vbWhite)SelectObject TempHdc, hPenMoveToEx TempHdc, 0, ucHeight - 1, pntLineTo TempHdc, 0, 0LineTo TempHdc, ucWidth - 1, 0DeleteObject hPen'Skyv = -1'MouseDownCase Is = 2'Tegn bakgrunnFarge.ColorLT = RGB(140, 140, 140)Farge.ColorRT = RGB(230, 240, 250)Farge.ColorRB = RGB(130, 140, 150)Farge.ColorLB = RGB(160, 170, 180)If UserControl.Enabled = False ThenFarge.ColorLT = RGB(140, 140, 140)Farge.ColorRT = RGB(240, 240, 240)Farge.ColorRB = RGB(140, 140, 140)Farge.ColorLB = RGB(170, 170, 170)BorderColor = RGB(150, 150, 150)End IfCall FadeTriangel(Farge, rc, True, TempHdc)'Lag path av strekene som her tegnesBeginPath TempHdc'To streker(venstre/topp)MoveToEx TempHdc, 0, ucHeight - 1, pntLineTo TempHdc, 0, 0LineTo TempHdc, ucWidth - 1, 0'To streker(høyre og bunn)MoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, ucHeightLineTo TempHdc, 0, ucHeight - 1'Avslutt pathEndPath TempHdc'Konverter path til regionhRgn = PathToRegion(TempHdc)hBrush = CreateSolidBrush(vbWhite)'Tegn ramme langs regionenFrameRgn TempHdc, hRgn, hBrush, 1, 1'Sett regionen til UserControlSetWindowRgn UserControl.hwnd, hRgn, True'Slett hendlerDeleteObject hRgnDeleteObject hBrush'Lag en penn, tegn to grå streker (venstre/topp)hPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hPenMoveToEx TempHdc, 0, ucHeight - 1, pntLineTo TempHdc, 0, 0LineTo TempHdc, ucWidth - 1, 0DeleteObject hPenSkyv = 1End Select'AlphaBlending TempHdc, 50If MousePos <> 0 Then'Tegn Caption vanlig eller disabledSetTextColor TempHdc, m_ForeColorIf m_Caption <> "" ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), CaptionL + Skyv, CaptionT + Skyv, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End If'Tegn Ikon vanlig eller disabledIf m_IconDefault ThenIf UserControl.Enabled = True Thenpic1.PaintPicture m_IconDefault, IconL + Skyv, IconT + Skyv'BitBlt TempHdc, 0, 0, IconW, IconH, m_IconDefault, 0, 0, vbSrcCopyElseDrawState TempHdc, 0, 0, m_IconDefault.Handle, 0, IconL + Skyv, IconT + Skyv, 0, 0, DST_ICON Or DSS_DISABLEDEnd IfEnd If'UserControl.RefreshEnd IfEnd SubPrivate Sub TegnMetallKnapp(uHdc As Long, MousePos As Integer)On Error Resume NextDim pnt As POINTAPIDim hRgn As LongDim hBrush As LongDim hPen As LongDim Skyv As IntegerDim TempHdc As LongTempHdc = pic1.hdcSet pic1.Font = UserControl.FontDefaultColor = RGB(243, 240, 232)BorderColor = RGB(0, 0, 0)DownColor = RGB(223, 220, 212)'Tegne med lys grå om kontrollen er disabledIf UserControl.Enabled = False Then BorderColor = RGB(150, 150, 150)Select Case MousePos'MouseLeave og ved initieringCase Is = 0hRgn = CreateRoundRectRgn(0, 0, ucWidth, ucHeight, 5, 5)hBrush = CreateSolidBrush(BorderColor)FrameRgn TempHdc, hRgn, hBrush, 1, 1SetWindowRgn UserControl.hwnd, hRgn, TrueDeleteObject hRgnDeleteObject hBrush'Grå rammehBrush = CreateSolidBrush(DefaultColor)hPen = CreatePen(PS_SOLID, 1, RGB(179, 177, 156))SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRoundRect TempHdc, 1, 1, ucWidth - 2, ucHeight - 2, 4, 4DeleteObject hPenDeleteObject hBrush'To hvite streker(venstre og topp)hPen = CreatePen(PS_SOLID, 1, vbWhite)SelectObject TempHdc, hPenMoveToEx TempHdc, 2, ucHeight - 4, pntLineTo TempHdc, 2, 2LineTo TempHdc, ucWidth - 3, 2DeleteObject hPenMousePos = -1Skyv = 0'MouseOverCase Is = 1hRgn = CreateRoundRectRgn(0, 0, ucWidth, ucHeight, 5, 5)hBrush = CreateSolidBrush(BorderColor)FrameRgn TempHdc, hRgn, hBrush, 1, 1SetWindowRgn UserControl.hwnd, hRgn, TrueDeleteObject hRgnDeleteObject hBrush'Grå rammehBrush = CreateSolidBrush(DefaultColor)hPen = CreatePen(PS_SOLID, 1, RGB(179, 177, 156))SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRoundRect TempHdc, 1, 1, ucWidth - 2, ucHeight - 2, 4, 4DeleteObject hPenDeleteObject hBrush'To hvite streker(venstre og topp)hPen = CreatePen(PS_SOLID, 1, vbWhite)SelectObject TempHdc, hPenMoveToEx TempHdc, 2, ucHeight - 4, pntLineTo TempHdc, 2, 2LineTo TempHdc, ucWidth - 3, 2DeleteObject hPen'Tegn lysbrun RoundRect fylt med OverColorhBrush = CreateSolidBrush(DefaultColor)hPen = CreatePen(PS_SOLID, 1, RGB(177, 179, 156))SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRoundRect TempHdc, 2, 2, ucWidth - 3, ucHeight - 3, 6, 6DeleteObject hPenDeleteObject hBrush'Skyv = -1'MouseDownCase Is = 2'Tegn sort RoundRect fylt med DownColorhRgn = CreateRoundRectRgn(0, 0, ucWidth, ucHeight, 5, 5)hBrush = CreateSolidBrush(DownColor)hPen = CreatePen(PS_SOLID, 1, vbBlack)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenSetWindowRgn UserControl.hwnd, hRgn, TrueRoundRect TempHdc, 0, 0, ucWidth - 1, ucHeight - 1, 6, 6DeleteObject hPenDeleteObject hBrushDeleteObject hRgn'Tegn hvit RoundRect innenfor den ytre fylt med DownColorhBrush = CreateSolidBrush(DownColor)hPen = CreatePen(PS_SOLID, 1, vbWhite)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRoundRect TempHdc, 1, 1, ucWidth - 2, ucHeight - 2, 4, 4DeleteObject hPenDeleteObject hBrush'To grå strekerhPen = CreatePen(PS_SOLID, 1, RGB(129, 127, 106))SelectObject TempHdc, hPenMoveToEx TempHdc, 1, ucHeight - 4, pntLineTo TempHdc, 1, 1MoveToEx TempHdc, 2, 1, pntLineTo TempHdc, ucWidth - 3, 1DeleteObject hPen'To hvite strekerhPen = CreatePen(PS_SOLID, 1, vbWhite)SelectObject TempHdc, hPenMoveToEx TempHdc, ucWidth - 4, 2, pntLineTo TempHdc, ucWidth - 4, ucHeight - 4LineTo TempHdc, 2, ucHeight - 4DeleteObject hPen'UserControl.RefreshSkyv = 1End SelectIf MousePos <> 0 Then'Tegn Caption vanlig eller disabledSetTextColor TempHdc, m_ForeColorIf m_Caption <> "" ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), CaptionL + Skyv, CaptionT + Skyv, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End If'Tegn Ikon vanlig eller disabledIf m_IconDefault ThenIf UserControl.Enabled = True Thenpic1.PaintPicture m_IconDefault, IconL + Skyv, IconT + SkyvElseDrawState TempHdc, 0, 0, m_IconDefault.Handle, 0, IconL + Skyv, IconT + Skyv, 0, 0, DST_ICON Or DSS_DISABLEDEnd IfEnd If'UserControl.RefreshEnd IfEnd SubPrivate Sub TegnAvrundetKnapp(uHdc As Long, MousePos As Integer)On Error Resume NextDim rc As RECTDim Farge2 As GRADIENT_COLORDim Farge As TRIANGEL_COLORDim pnt As POINTAPIDim hRgn As LongDim hBrush As LongDim hPen As LongDim Skyv As IntegerConst avr As Integer = 5Dim SelectedColor(1) As LongDim TempHdc As LongTempHdc = pic1.hdcSet pic1.Font = UserControl.Fontrc.Left = 0rc.Top = 0rc.Right = ucWidthrc.Bottom = ucHeight'Tegne med blålig eller lys grå om kontrollen er enabled/disabled'Farger om enabled/disabledIf UserControl.Enabled = True ThenDownColor = RGB(252, 252, 254) 'Bakgrunnsfarge på den som har Value=TrueBorderColor = RGB(28, 81, 128) 'Blålig farge 'Blålig farge til ramme RGB(145, 167, 180) 'SelectedColor(0) = RGB(255, 255, 255) 'Graderingsfargen på toppen om Value=TrueSelectedColor(1) = RGB(236, 235, 230) 'Graderingsfargen på toppen om Value=TrueElseDownColor = vbWhiteBorderColor = RGB(182, 180, 167)SelectedColor(0) = vbWhiteSelectedColor(1) = vbWhiteEnd IfSelect Case MousePos'MouseLeave og ved initieringCase Is = 0'Tegn gradert bakgrunnIf UserControl.Enabled = True ThenFarge2.ColorFrom = SelectedColor(0)Farge2.ColorTo = SelectedColor(1)Call FadeGradient(Farge2, rc.Left, rc.Top, rc.Right, rc.Bottom, TempHdc)'SkyggestrekerhPen = CreatePen(PS_SOLID, 1, RGB(214, 208, 197))SelectObject TempHdc, hPenMoveToEx TempHdc, 0, ucHeight - 3, pntLineTo TempHdc, ucWidth, ucHeight - 3DeleteObject hPenhPen = CreatePen(PS_SOLID, 1, RGB(226, 223, 214))SelectObject TempHdc, hPenMoveToEx TempHdc, 0, ucHeight - 4, pntLineTo TempHdc, ucWidth, ucHeight - 4DeleteObject hPenhPen = CreatePen(PS_SOLID, 1, RGB(226, 223, 214))SelectObject TempHdc, hPenMoveToEx TempHdc, ucWidth - 3, 0, pntLineTo TempHdc, ucWidth - 3, ucHeightDeleteObject hPenhPen = CreatePen(PS_SOLID, 1, vbWhite)SelectObject TempHdc, hPenMoveToEx TempHdc, 1, 0, pntLineTo TempHdc, 1, ucHeightDeleteObject hPen'Tegn hvit bakgrunn om den er disabletElseIf UserControl.Enabled = False ThenhBrush = CreateSolidBrush(vbWhite)hPen = CreatePen(PS_SOLID, 1, vbWhite)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, rc.Left, rc.Top, rc.Right, rc.BottomDeleteObject hPenDeleteObject hBrushEnd If'Tegn regionenhRgn = CreateRoundRectRgn(0, 0, ucWidth, ucHeight, avr, avr)hBrush = CreateSolidBrush(BorderColor)FrameRgn TempHdc, hRgn, hBrush, 1, 1SetWindowRgn UserControl.hwnd, hRgn, TrueDeleteObject hRgnDeleteObject hBrush'Sett noen punkter i hjørnene for at de skal se litt bedre utCall RundeHjorner(TempHdc)MousePos = -1Skyv = 0'MouseOverCase Is = 1'Tegn gradert bakgrunnFarge2.ColorFrom = SelectedColor(0)Farge2.ColorTo = SelectedColor(1)Call FadeGradient(Farge2, rc.Left, rc.Top, rc.Right, rc.Bottom, TempHdc)'SkyggestrekerhPen = CreatePen(PS_SOLID, 1, RGB(214, 208, 197))SelectObject TempHdc, hPenMoveToEx TempHdc, 0, ucHeight - 3, pntLineTo TempHdc, ucWidth, ucHeight - 3DeleteObject hPenhPen = CreatePen(PS_SOLID, 1, RGB(226, 223, 214))SelectObject TempHdc, hPenMoveToEx TempHdc, 0, ucHeight - 4, pntLineTo TempHdc, ucWidth, ucHeight - 4DeleteObject hPenhPen = CreatePen(PS_SOLID, 1, RGB(226, 223, 214))SelectObject TempHdc, hPenMoveToEx TempHdc, ucWidth - 3, 0, pntLineTo TempHdc, ucWidth - 3, ucHeightDeleteObject hPenhPen = CreatePen(PS_SOLID, 1, vbWhite)SelectObject TempHdc, hPenMoveToEx TempHdc, 1, 0, pntLineTo TempHdc, 1, ucHeightDeleteObject hPen'Tegn gradert oransje stripe øverstrc.Left = 0rc.Top = 1rc.Right = ucWidthrc.Bottom = 5Farge.ColorLT = RGB(255, 240, 207)Farge.ColorRT = RGB(251, 200, 99)Farge.ColorRB = RGB(248, 179, 48)Farge.ColorLB = RGB(251, 200, 99)Call FadeTriangel(Farge, rc, True, TempHdc)'Tegn regionen på nytthRgn = CreateRoundRectRgn(0, 0, ucWidth, ucHeight, avr, avr)hBrush = CreateSolidBrush(BorderColor)FrameRgn TempHdc, hRgn, hBrush, 1, 1DeleteObject hRgnDeleteObject hBrush'Sett noen punkter i hjørnene for at de skal se litt bedre utCall RundeHjorner(TempHdc)Skyv = 0'MouseDownCase Is = 2'Tegn gradert mørk bakgrunnFarge.ColorLT = RGB(176, 176, 167)Farge.ColorRT = RGB(215, 213, 200)Farge.ColorRB = RGB(241, 239, 223)Farge.ColorLB = RGB(215, 213, 200)Call FadeTriangel(Farge, rc, True, TempHdc)'Tegn regionen på nytthRgn = CreateRoundRectRgn(0, 0, ucWidth, ucHeight, avr, avr)hBrush = CreateSolidBrush(BorderColor)FrameRgn TempHdc, hRgn, hBrush, 1, 1SetWindowRgn UserControl.hwnd, hRgn, TrueDeleteObject hRgnDeleteObject hBrush'Sett noen punkter i hjørnene for at de skal se litt bedre utCall RundeHjorner(TempHdc)Skyv = 1End SelectIf MousePos <> 0 Then'Tegn Caption vanlig eller disabledSetTextColor TempHdc, m_ForeColorIf m_Caption <> "" ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), CaptionL + Skyv, CaptionT + Skyv, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End If'Tegn Ikon vanlig eller disabledIf m_IconDefault ThenIf UserControl.Enabled = True Thenpic1.PaintPicture m_IconDefault, IconL + Skyv, IconT + SkyvElseDrawState TempHdc, 0, 0, m_IconDefault.Handle, 0, IconL + Skyv, IconT + Skyv, 0, 0, DST_ICON Or DSS_DISABLEDEnd IfEnd If'UserControl.RefreshEnd IfEnd SubPrivate Sub TegnTabKnapp(uHdc As Long, MousePos As Integer)On Error Resume NextDim rc As RECTDim Farge As GRADIENT_COLORDim Farge2 As TRIANGEL_COLORDim pnt As POINTAPIDim hRgn As LongDim hBrush As LongDim hPen As LongDim Skyv As IntegerDim SelectedColor(1) As LongConst avr As Integer = 5Dim TempHdc As LongTempHdc = pic1.hdcSet pic1.Font = UserControl.Fontrc.Left = 0rc.Top = 0rc.Right = ucWidthrc.Bottom = ucHeight'Farger om enabledIf UserControl.Enabled = True ThenDownColor = RGB(252, 252, 254) 'Bakgrunnsfarge på den som har Value=TrueBorderColor = TranslateColor(m_jjTabBorderColor) 'RammefargeSelectedColor(0) = vbWhite 'Fra graderingsfargen på toppen om Value=TrueSelectedColor(1) = TranslateColor(m_jjTabSelectedColor) 'Til graderingsfargen på toppen om Value=True'DisabledElseDownColor = vbWhiteBorderColor = RGB(182, 180, 167)SelectedColor(0) = RGB(240, 240, 240)SelectedColor(1) = RGB(170, 170, 170)End IfSelect Case MousePos'MouseLeave og ved initieringCase Is = 0'Tegn gradert bakgrunnIf UserControl.Enabled = True ThenFarge.ColorFrom = RGB(255, 255, 255)Farge.ColorTo = RGB(236, 235, 230)Call FadeGradient(Farge, rc.Left, rc.Top, rc.Right, rc.Bottom, TempHdc)'Tegn hvit bakgrunn om den er disabletElseIf UserControl.Enabled = False ThenhBrush = CreateSolidBrush(vbWhite)hPen = CreatePen(PS_SOLID, 1, vbWhite)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, rc.Left, rc.Top, rc.Right, rc.BottomDeleteObject hPenDeleteObject hBrushEnd If'Lag path av strekene som her tegnesBeginPath TempHdc'Tegn 5 strekerMoveToEx TempHdc, 0, ucHeight, pntLineTo TempHdc, 0, 2LineTo TempHdc, 2, 0LineTo TempHdc, ucWidth - 2, 0LineTo TempHdc, ucWidth, 2LineTo TempHdc, ucWidth, ucHeight'Avslutt pathEndPath TempHdc'Konverter path til regionhRgn = PathToRegion(TempHdc)hBrush = CreateSolidBrush(BorderColor)'Tegn ramme langs regionenFrameRgn TempHdc, hRgn, hBrush, 1, 1'Sett regionen til UserControlSetWindowRgn UserControl.hwnd, hRgn, True'Tegn bunnstrekIf m_Value = False ThenhPen = CreatePen(PS_SOLID, 1, BorderColor)ElsehPen = CreatePen(PS_SOLID, 1, DownColor)End IfSelectObject TempHdc, hPenMoveToEx TempHdc, 1, ucHeight - 1, pntLineTo TempHdc, ucWidth - 1, ucHeight - 1'Slett hendlerDeleteObject hRgnDeleteObject hBrushDeleteObject hPenMousePos = -1'Skyv = 0'MouseOverCase Is = 1'Tegn gradert bakgrunn om Value=FalseIf m_Value = False ThenFarge.ColorFrom = RGB(255, 255, 255)Farge.ColorTo = RGB(236, 235, 230)Call FadeGradient(Farge, rc.Left, rc.Top, rc.Right, rc.Bottom, TempHdc)Else'Tegn lys bakgrunnhBrush = CreateSolidBrush(DownColor)hPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrushEnd If'Tegn gradert oransje stripe øverst om Value=FalseIf m_Value = False Thenrc.Left = 0rc.Top = 0rc.Right = ucWidthrc.Bottom = 5Farge2.ColorLT = RGB(255, 240, 207)Farge2.ColorRT = RGB(251, 200, 99)Farge2.ColorRB = RGB(248, 179, 48)Farge2.ColorLB = RGB(251, 200, 99)Call FadeTriangel(Farge2, rc, True, TempHdc)Else'Tegn gradert blå stripe øverstFarge.ColorFrom = SelectedColor(0)Farge.ColorTo = SelectedColor(1)Call FadeGradient(Farge, 0, 1, ucWidth, 5, TempHdc)End If'Lag path av strekene som her tegnesBeginPath TempHdc'Tegn 5 strekerMoveToEx TempHdc, 0, ucHeight, pntLineTo TempHdc, 0, 2LineTo TempHdc, 2, 0LineTo TempHdc, ucWidth - 2, 0LineTo TempHdc, ucWidth, 2LineTo TempHdc, ucWidth, ucHeight'Avslutt pathEndPath TempHdc'Konverter path til regionhRgn = PathToRegion(TempHdc)hBrush = CreateSolidBrush(BorderColor)'Tegn ramme langs regionenFrameRgn TempHdc, hRgn, hBrush, 1, 1'Sett regionen til UserControl'SetWindowRgn UserControl.hwnd, hRgn, True'Tegn bunnstrekIf m_Value = False ThenhPen = CreatePen(PS_SOLID, 1, BorderColor)ElsehPen = CreatePen(PS_SOLID, 1, DownColor)End IfSelectObject TempHdc, hPenMoveToEx TempHdc, 1, ucHeight - 1, pntLineTo TempHdc, ucWidth - 1, ucHeight - 1'Slett hendlerDeleteObject hRgnDeleteObject hBrushDeleteObject hPen''Skyv = 1'MouseDownCase Is = 2'Tegn lys bakgrunnhBrush = CreateSolidBrush(DownColor)hPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrush'Tegn gradert blå stripe øverstFarge.ColorFrom = SelectedColor(0)Farge.ColorTo = SelectedColor(1)Call FadeGradient(Farge, 0, 1, ucWidth, 5, TempHdc)'Lag path av strekene som her tegnesBeginPath TempHdc'Tegn 5 strekerMoveToEx TempHdc, 0, ucHeight, pntLineTo TempHdc, 0, 2LineTo TempHdc, 2, 0LineTo TempHdc, ucWidth - 2, 0LineTo TempHdc, ucWidth, 2LineTo TempHdc, ucWidth, ucHeight'Avslutt pathEndPath TempHdc'Konverter path til regionhRgn = PathToRegion(TempHdc)hBrush = CreateSolidBrush(BorderColor)'Tegn ramme langs regionenFrameRgn TempHdc, hRgn, hBrush, 1, 1'Sett regionen til UserControlSetWindowRgn UserControl.hwnd, hRgn, True'Tegn bunnstrekhPen = CreatePen(PS_SOLID, 1, DownColor)SelectObject TempHdc, hPenMoveToEx TempHdc, 1, ucHeight - 1, pntLineTo TempHdc, ucWidth - 1, ucHeight - 1'Slett hendlerDeleteObject hRgnDeleteObject hBrushDeleteObject hPenUserControl.Refresh'Skyv = -1End SelectIf MousePos <> 0 Then'Tegn Caption vanlig eller disabledSetTextColor TempHdc, m_ForeColorIf m_Caption <> "" ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), CaptionL + Skyv, CaptionT + Skyv, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End If'Tegn Ikon vanlig eller disabledIf m_IconDefault ThenIf UserControl.Enabled = True Thenpic1.PaintPicture m_IconDefault, IconL + Skyv, IconT + SkyvElseDrawState TempHdc, 0, 0, m_IconDefault.Handle, 0, IconL + Skyv, IconT + Skyv, 0, 0, DST_ICON Or DSS_DISABLEDEnd IfEnd IfEnd IfEnd Sub'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=7,0,0,0Public Property Get IconAlign() As jjIconAlignAttribute IconAlign.VB_Description = "Plassering av ikon i forhold til knappetekst."IconAlign = m_IconAlignEnd PropertyPublic Property Let IconAlign(ByVal New_IconAlign As jjIconAlign)m_IconAlign = New_IconAlignPropertyChanged "IconAlign"Call HighLight(-1, -1, -1, False)DoEventsEnd Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=7,0,0,1Public Property Get IconSpace() As IntegerAttribute IconSpace.VB_Description = "Avstand i piksler mellom ikon og knappetekst."IconSpace = m_IconSpaceEnd PropertyPublic Property Let IconSpace(ByVal New_IconSpace As Integer)m_IconSpace = New_IconSpacePropertyChanged "IconSpace"Call HighLight(-1, -1, -1, False)DoEventsEnd Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=13,0,0,Public Property Get jjToolTip() As StringjjToolTip = m_jjToolTipEnd PropertyPublic Property Let jjToolTip(ByVal New_Tooltip As String)m_jjToolTip = New_TooltipPropertyChanged "jjToolTip"ttInZone = False 'End Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=13,0,0,Public Property Get jjToolTipHeader() As StringAttribute jjToolTipHeader.VB_Description = "Overskrift i tooltip."jjToolTipHeader = m_jjToolTipHeaderEnd PropertyPublic Property Let jjToolTipHeader(ByVal New_jjToolTipHeader As String)m_jjToolTipHeader = New_jjToolTipHeaderPropertyChanged "jjToolTipHeader"End Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=7,0,0,0Public Property Get jjToolTipIcon() As ttIconTypeAttribute jjToolTipIcon.VB_Description = "Ikon i tooltip, vises om overskrift er lagt inn i jjToolTipHeader."jjToolTipIcon = m_jjToolTipIconEnd PropertyPublic Property Let jjToolTipIcon(ByVal New_jjToolTipIcon As ttIconType)m_jjToolTipIcon = New_jjToolTipIconPropertyChanged "jjToolTipIcon"End Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=7,0,0,0Public Property Get jjToolTipStyle() As ttStyleEnumAttribute jjToolTipStyle.VB_Description = "Kvadratisk eller snakkeboble."jjToolTipStyle = m_jjToolTipStyleEnd PropertyPublic Property Let jjToolTipStyle(ByVal New_jjToolTipStyle As ttStyleEnum)m_jjToolTipStyle = New_jjToolTipStylePropertyChanged "jjToolTipStyle"End PropertyPrivate Sub AlphaBlending(uHdc As Long, Verdi As Long)' Dim BF As BLENDFUNCTION' Dim lBF As Long'' 'Sett parameter' With BF' .BlendOp = AC_SRC_OVER' .BlendFlags = 0' .SourceConstantAlpha = Verdi' .AlphaFormat = 0' End With'' 'Kopiere BLENDFUNCTION-strukturen til en Long' RtlMoveMemory lBF, BF, 4'' 'Kopier bildet fra kontrollen til pic1 for Alphablending' pic1.Picture = LoadPicture()' pic1.Picture = UserControl.Picture'' 'AlphaBlend fra pic1 til kontrollen' AlphaBlend uHdc, 0, 0, ucWidth, ucHeight, pic1.hdc, 0, 0, ucWidth, ucHeight, lBFEnd Sub'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=0,0,0,0Public Property Get Value() As BooleanAttribute Value.VB_Description = "Verdi på avkryssningsknapp om dette er valgt under Mode"Value = m_ValueEnd PropertyPublic Property Let Value(ByVal New_Value As Boolean)If New_Value = m_Value Then Exit Propertym_Value = New_ValuePropertyChanged "Value"If m_Value = True Thenm_Value = Falsem_Mode = Me.ModemButton = vbLeftButtonUserControl_ClickExit PropertyEnd IfIf m_Mode = jj_Option ThenIf m_Value = True Then RaiseEvent ClickElseRaiseEvent ClickEnd IfClsCall HighLight(-1, -1, -1, False)Call SetAcccessKeyDoEventsEnd Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=7,0,0,0Public Property Get Mode() As jjModeAttribute Mode.VB_Description = "Vanlig knapp eller avkryssningsknapp"Mode = m_ModeEnd PropertyPublic Property Let Mode(ByVal New_Mode As jjMode)m_Mode = New_ModePropertyChanged "Mode"ClsCall HighLight(-1, -1, -1, False)Call SetAcccessKeyDoEventsEnd PropertyPrivate Sub TegnFargetKnapp(uHdc As Long, MousePos As Integer)On Error Resume NextDim hBrush As LongDim hPen As LongDim Skyv As IntegerDim TempHdc As LongTempHdc = pic1.hdcSet pic1.Font = UserControl.Font'Gjør DownColor lysere om det er en jj_Check eller jj_Option med Value=TrueIf (m_Mode = jj_Check Or m_Mode = jj_Option) And m_Value = True ThenIf jjButtonStyle = jj_Blå Then DownColor = ShadeColor(DownColor, 80, False)If jjButtonStyle = jj_Rød Then DownColor = ShadeColor(DownColor, 90, False)If jjButtonStyle = jj_Grønn Then DownColor = ShadeColor(DownColor, 130, False)If jjButtonStyle = jj_Gul Then DownColor = ShadeColor(DownColor, 140, False)'Tegne med lys grå om kontrollen er disabledIf UserControl.Enabled = False ThenDownColor = RGB(250, 250, 250)BorderColor = RGB(150, 150, 150)End IfEnd IfSelect Case MousePos'MouseLeave og ved initieringCase Is = 0'Ramme og bakgrunn tegnes i valgt bakgrunnsfargehBrush = CreateSolidBrush(DefaultColor)hPen = CreatePen(PS_SOLID, 1, DefaultColor)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrush'Kopier inn bakgrunnen fra formen om dette er valgtIf m_CopyBGSource = jj_Form ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, UserControl.Parent.hdc, _UserControl.ScaleX(UserControl.Extender.Left, UserControl.Parent.ScaleMode, vbPixels), _UserControl.ScaleY(UserControl.Extender.Top, UserControl.Parent.ScaleMode, vbPixels), vbSrcCopy'Kopier inn bakgrunnen fra en picturebox om dette er valgtElseIf m_CopyBGSource = jj_PictureBox ThenIf Ambient.UserMode = True ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, m_CopyBGBoxName.hdc, _m_CopyBGBoxName.ScaleX(UserControl.Extender.Left, m_CopyBGBoxName.ScaleMode, vbPixels), _m_CopyBGBoxName.ScaleY(UserControl.Extender.Top, m_CopyBGBoxName.ScaleMode, vbPixels), vbSrcCopyEnd If'Kopier inn bakgrunnen fra en jjbox om dette er valgtElseIf m_CopyBGSource = jj_Box ThenIf Ambient.UserMode = True ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, m_CopyBGBoxName.hdc, _UserControl.Extender.Left / 15, _UserControl.Extender.Top / 15, vbSrcCopyEnd IfEnd IfMousePos = -1Skyv = 0'MouseOverCase Is = 1hBrush = CreateSolidBrush(OverColor)hPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrushSkyv = 0'MouseDownCase Is = 2hBrush = CreateSolidBrush(DownColor)hPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrush'UserControl.RefreshSkyv = 1End Select'Call TekstOgIkon(MousePos, uHdc, Skyv)If MousePos <> 0 Then'Tegn Caption vanlig eller disabledSetTextColor TempHdc, m_ForeColorIf m_Caption <> "" ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), CaptionL + Skyv, CaptionT + Skyv, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End If'Tegn Ikon vanlig eller disabledIf m_IconDefault ThenIf UserControl.Enabled = True Thenpic1.PaintPicture m_IconDefault, IconL + Skyv, IconT + SkyvElseDrawState TempHdc, 0, 0, m_IconDefault.Handle, 0, IconL + Skyv, IconT + Skyv, 0, 0, DST_ICON Or DSS_DISABLEDEnd IfEnd If'UserControl.RefreshEnd IfEnd SubPrivate Sub TegnXP2003Knapp(uHdc As Long, MousePos As Integer)On Error Resume NextDim hBrush As LongDim hPen As LongDim Skyv As IntegerDim TempHdc As LongDim SelectedColor(1) As LongDim MouseOverColor(1) As LongDim MouseLeaveColor(1) As LongDim BakgrunnsFarge As LongDim Farge2 As GRADIENT_COLORDim rc As RECT'Valg bakgrunnsfarge brukes om vi ikke kopierer inn noen bakgrunnBakgrunnsFarge = TranslateColor(m_BackColor)TempHdc = pic1.hdcSet pic1.Font = UserControl.Font'Fadingsområderc.Left = 1rc.Top = 1rc.Right = ucWidth - 1rc.Bottom = ucHeight - 1'Tegne med blålig eller lys grå om kontrollen er enabled/disabled'Farger om enabled/disabledIf UserControl.Enabled = True ThenBorderColor = RGB(0, 0, 128)SelectedColor(0) = RGB(255, 175, 88) 'Graderingsfargen om Value=TrueSelectedColor(1) = RGB(255, 211, 138) 'Graderingsfargen om Value=TrueMouseOverColor(0) = RGB(255, 241, 198) 'Graderingsfargen ved MouseOverMouseOverColor(1) = RGB(255, 213, 154) 'Graderingsfargen ved MouseOverMouseLeaveColor(0) = RGB(255, 211, 138)MouseLeaveColor(1) = RGB(255, 175, 88)ElseBorderColor = RGB(182, 182, 182)MouseLeaveColor(0) = vbWhiteMouseLeaveColor(1) = vbWhiteEnd IfSelect Case MousePos'MouseLeave og ved initieringCase Is = 0'Ramme og bakgrunn tegnes i valgt bakgrunnsfargehBrush = CreateSolidBrush(BakgrunnsFarge)hPen = CreatePen(PS_SOLID, 1, BakgrunnsFarge)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrush'Kopier inn bakgrunnen fra formen om dette er valgtIf m_CopyBGSource = jj_Form ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, UserControl.Parent.hdc, _UserControl.ScaleX(UserControl.Extender.Left, UserControl.Parent.ScaleMode, vbPixels), _UserControl.ScaleY(UserControl.Extender.Top, UserControl.Parent.ScaleMode, vbPixels), vbSrcCopy'Kopier inn bakgrunnen fra en picturebox om dette er valgtElseIf m_CopyBGSource = jj_PictureBox ThenIf Ambient.UserMode = True ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, m_CopyBGBoxName.hdc, _m_CopyBGBoxName.ScaleX(UserControl.Extender.Left, m_CopyBGBoxName.ScaleMode, vbPixels), _m_CopyBGBoxName.ScaleY(UserControl.Extender.Top, m_CopyBGBoxName.ScaleMode, vbPixels), vbSrcCopyEnd If'Kopier inn bakgrunnen fra en jjbox om dette er valgtElseIf m_CopyBGSource = jj_Box ThenIf Ambient.UserMode = True ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, m_CopyBGBoxName.hdc, _UserControl.Extender.Left / 15, _UserControl.Extender.Top / 15, vbSrcCopyEnd IfEnd IfMousePos = -1Skyv = 0'MouseOverCase Is = 1hPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenFarge2.ColorFrom = MouseOverColor(0)Farge2.ColorTo = MouseOverColor(1)Call FadeGradient(Farge2, rc.Left, rc.Top, rc.Right, rc.Bottom, TempHdc)MousePos = -1Skyv = 0'MouseDownCase Is = 2hPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenIf m_Value = False ThenFarge2.ColorFrom = SelectedColor(0)Farge2.ColorTo = SelectedColor(1)ElseFarge2.ColorFrom = MouseLeaveColor(0)Farge2.ColorTo = MouseLeaveColor(1)End IfCall FadeGradient(Farge2, rc.Left, rc.Top, rc.Right, rc.Bottom, TempHdc)Skyv = 1End Select'Call TekstOgIkon(MousePos, uHdc, Skyv)If MousePos <> 0 Then'Tegn Caption vanlig eller disabledSetTextColor TempHdc, m_ForeColorIf m_Caption <> "" ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), CaptionL + Skyv, CaptionT + Skyv, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End If'Tegn Ikon vanlig eller disabledIf m_IconDefault ThenIf UserControl.Enabled = True Thenpic1.PaintPicture m_IconDefault, IconL + Skyv, IconT + SkyvElseDrawState TempHdc, 0, 0, m_IconDefault.Handle, 0, IconL + Skyv, IconT + Skyv, 0, 0, DST_ICON Or DSS_DISABLEDEnd IfEnd IfEnd IfEnd SubPrivate Sub TegnTekstKnapp(uHdc As Long, MousePos As Integer)On Error Resume NextDim hBrush As LongDim hPen As LongDim Skyv As IntegerDim TempHdc As LongTempHdc = pic1.hdcSet pic1.Font = UserControl.FontlOldFont.Name = UserControl.FontNamelOldFont.Bold = UserControl.FontBoldlOldFont.Italic = UserControl.FontItaliclOldFont.Size = UserControl.FontSizelOldFont.Strikethru = UserControl.FontStrikethrulOldFont.Underline = UserControl.FontUnderlineDefaultColor = TranslateColor(m_ForeColor)OverColor = ShadeColor(DefaultColor, 130, False)'Ramme og bakgrunn tegnes i valgt bakgrunnsfargehBrush = CreateSolidBrush(TranslateColor(m_BackColor))hPen = CreatePen(PS_SOLID, 1, TranslateColor(m_BackColor))SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrush'Kopier inn bakgrunnen om dette er valgtIf m_CopyBGSource = jj_Form ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, UserControl.Parent.hdc, _UserControl.ScaleX(UserControl.Extender.Left, UserControl.Parent.ScaleMode, vbPixels), _UserControl.ScaleY(UserControl.Extender.Top, UserControl.Parent.ScaleMode, vbPixels), vbSrcCopy'Kopier inn bakgrunnen fra en picturebox om dette er valgtElseIf m_CopyBGSource = jj_PictureBox ThenIf Ambient.UserMode = True ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, m_CopyBGBoxName.hdc, _m_CopyBGBoxName.ScaleX(UserControl.Extender.Left, m_CopyBGBoxName.ScaleMode, vbPixels), _m_CopyBGBoxName.ScaleY(UserControl.Extender.Top, m_CopyBGBoxName.ScaleMode, vbPixels), vbSrcCopyEnd If'Kopier inn bakgrunnen fra en jjbox om dette er valgtElseIf m_CopyBGSource = jj_Box ThenIf Ambient.UserMode = True ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, m_CopyBGBoxName.hdc, _UserControl.Extender.Left / 15, _UserControl.Extender.Top / 15, vbSrcCopyEnd IfEnd IfSelect Case MousePos'MouseLeave og ved initieringCase Is = 0MousePos = 1Skyv = 0'MouseOverCase Is = 1UserControl.FontUnderline = TrueSetTextColor TempHdc, OverColorIf m_Caption <> "" ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), CaptionL, CaptionT, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End IfMousePos = 0Skyv = 0'MouseDownCase Is = 2UserControl.FontUnderline = TrueSetTextColor TempHdc, DefaultColorIf m_Caption <> "" ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), CaptionL + Skyv, CaptionT + Skyv, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End IfUserControl.RefreshMousePos = 0Skyv = 0End Select'Sett tilbake til valgt fontWith UserControl.FontName = lOldFont.Name.FontSize = lOldFont.Size.FontBold = lOldFont.Bold.FontItalic = lOldFont.Italic.FontStrikethru = lOldFont.Strikethru.FontUnderline = lOldFont.UnderlineEnd WithIf MousePos <> 0 Then'Tegn Caption vanlig eller disabledSetTextColor TempHdc, m_ForeColorIf m_Caption <> "" ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), CaptionL + Skyv, CaptionT + Skyv, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End IfUserControl.RefreshEnd IfEnd SubPrivate Sub TegnCheckboxKnapp(uHdc As Long, MousePos As Integer)'Checkbox som er lik XP-standertypeOn Error Resume NextDim CheckMark As StringDim pnt As POINTAPIDim rc As RECTDim Farge As TRIANGEL_COLORDim hPen As LongDim hBrush As LongDim CheckedColor As LongConst Size As Integer = 12Dim a As IntegerDim CheckY As IntegerDim TempHdc As LongTempHdc = pic1.hdcSet pic1.Font = UserControl.Font'Plasseringspos for det grønne sjekkmerke, ypos varierer fra Win2000 og WinXPCheckY = 0If OS(2) = "1" Then CheckY = -2'Juster plassering i forhold til høyre/venstre justeringIf m_IconAlign = jj_Left Thena = 0Elsea = ucWidth - 13End Ifrc.Left = 1 + arc.Top = 1rc.Right = 12 + arc.Bottom = 12'Gamle font verdierlOldFont.Name = UserControl.FontNamelOldFont.Bold = UserControl.FontBoldlOldFont.Italic = UserControl.FontItaliclOldFont.Size = UserControl.FontSizelOldFont.Strikethru = UserControl.FontStrikethrulOldFont.Underline = UserControl.FontUnderline'Checkmerke i Marlett-fontenCheckMark = Chr(97)'Tegne med blålig eller lys grå om kontrollen er enabled/disabledIf UserControl.Enabled = True ThenBorderColor = RGB(28, 81, 128) 'Blålig fargeCheckedColor = RGB(33, 161, 33) 'GrønnligElseBorderColor = RGB(182, 180, 167) 'Grålig 'RGB(202, 200, 187)End If'Sett valgt bakgrunnsfarge om dette er valgthBrush = CreateSolidBrush(TranslateColor(m_BackColor))hPen = CreatePen(PS_SOLID, 1, TranslateColor(m_BackColor))SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrush'Kopier inn bakgrunnen fra formen om dette er valgtIf m_CopyBGSource = jj_Form ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, UserControl.Parent.hdc, _UserControl.ScaleX(UserControl.Extender.Left, UserControl.Parent.ScaleMode, vbPixels), _UserControl.ScaleY(UserControl.Extender.Top, UserControl.Parent.ScaleMode, vbPixels), vbSrcCopy'Kopier inn bakgrunnen fra en picturebox om dette er valgtElseIf m_CopyBGSource = jj_PictureBox ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, m_CopyBGBoxName.hdc, _m_CopyBGBoxName.ScaleX(UserControl.Extender.Left, m_CopyBGBoxName.ScaleMode, vbPixels), _m_CopyBGBoxName.ScaleY(UserControl.Extender.Top, m_CopyBGBoxName.ScaleMode, vbPixels), vbSrcCopy'Kopier inn bakgrunnen fra en jjbox om dette er valgtElseIf m_CopyBGSource = jj_Box ThenIf Ambient.UserMode = True ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, m_CopyBGBoxName.hdc, _UserControl.Extender.Left / 15, _UserControl.Extender.Top / 15, vbSrcCopyEnd IfEnd IfSelect Case MousePos'MouseLeave og ved initieringCase Is = 0'Tegn gradert grå stor firkantIf UserControl.Enabled = True ThenFarge.ColorLT = RGB(215, 215, 210)Farge.ColorRT = RGB(241, 241, 239)Farge.ColorRB = RGB(255, 255, 255)Farge.ColorLB = RGB(241, 241, 239)Call FadeTriangel(Farge, rc, True, TempHdc)'Tegn hvit stor firkant om den er disabletElseIf UserControl.Enabled = False ThenhBrush = CreateSolidBrush(vbWhite)hPen = CreatePen(PS_SOLID, 1, vbWhite)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, rc.Left, rc.Top, rc.Right, rc.BottomDeleteObject hPenDeleteObject hBrushEnd If'Tegn en mindre firkant om den er checkedIf m_Value = True Then' 'Om den er enabled(grønnlig)' If UserControl.Enabled = True Then' hBrush = CreateSolidBrush(CheckedColor)' hPen = CreatePen(PS_SOLID, 1, CheckedColor)' 'Om den er disabled(grålig)' ElseIf UserControl.Enabled = False Then' hBrush = CreateSolidBrush(BorderColor)' hPen = CreatePen(PS_SOLID, 1, BorderColor)' End If' SelectObject TempHdc, hBrush' SelectObject TempHdc, hPen' If m_IconAlign = jj_Left Then' Rectangle TempHdc, 3, 3, 10, 10' Else' rc.Left = ucWidth - 10' rc.Top = 3' rc.Right = ucWidth - 3' rc.Bottom = 10' Rectangle TempHdc, rc.Left, rc.Top, rc.Right, rc.Bottom' End If' DeleteObject hPen' DeleteObject hBrush'Om den er enabled(grønnlig)If UserControl.Enabled = True ThenSetTextColor TempHdc, CheckedColor'Om den er disabled(grålig)ElseIf UserControl.Enabled = False ThenSetTextColor TempHdc, BorderColorEnd IfWith UserControl.FontName = "Marlett".FontSize = 12.FontItalic = False.FontBold = False.FontStrikethru = False.FontUnderline = FalseEnd WithSetTextColor TempHdc, CheckedColorIf m_IconAlign = jj_Left ThenDrawStateText TempHdc, 0, 0, CheckMark, Len(CheckMark), -1, CheckY, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)ElseDrawStateText TempHdc, 0, 0, CheckMark, Len(CheckMark), ucWidth - 14, CheckY, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End IfEnd If'Tegn rammenhPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hPenIf m_IconAlign = jj_Left ThenLineTo TempHdc, Size, 0LineTo TempHdc, Size, SizeLineTo TempHdc, 0, SizeLineTo TempHdc, 0, 0ElseMoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, SizeLineTo TempHdc, ucWidth - (Size + 1), SizeLineTo TempHdc, ucWidth - (Size + 1), 0LineTo TempHdc, ucWidth, 0End IfDeleteObject hPenMousePos = -1'MouseOverCase Is = 1'Tegn gradert oransje stor firkantFarge.ColorLT = RGB(255, 240, 207)Farge.ColorRT = RGB(251, 200, 99)Farge.ColorRB = RGB(248, 179, 48)Farge.ColorLB = RGB(251, 200, 99)Call FadeTriangel(Farge, rc, True, TempHdc)'Tegn gradert grå mindre firkant om den er unchecked'If m_Value = False ThenIf m_IconAlign = jj_Left Thenrc.Left = 3rc.Top = 3rc.Right = 10rc.Bottom = 10Elserc.Left = ucWidth - 10rc.Top = 3rc.Right = ucWidth - 3rc.Bottom = 10End IfFarge.ColorLT = RGB(224, 224, 219)Farge.ColorRT = RGB(241, 241, 239)Farge.ColorRB = RGB(253, 253, 252)Farge.ColorLB = RGB(241, 241, 239)Call FadeTriangel(Farge, rc, True, TempHdc)'Tegn grønn mindre firkant om den er checkedIf m_Value = True Then' hBrush = CreateSolidBrush(CheckedColor)' hPen = CreatePen(PS_SOLID, 1, CheckedColor)' SelectObject TempHdc, hBrush' SelectObject TempHdc, hPen' If m_IconAlign = jj_Left Then' Rectangle TempHdc, 3, 3, 10, 10' Else' rc.Left = ucWidth - 10' rc.Top = 3' rc.Right = ucWidth - 3' rc.Bottom = 10' Rectangle TempHdc, rc.Left, rc.Top, rc.Right, rc.Bottom' End If' DeleteObject hPen' DeleteObject hBrushWith UserControl.FontName = "Marlett".FontSize = 12.FontItalic = False.FontBold = False.FontStrikethru = False.FontUnderline = FalseEnd WithSetTextColor TempHdc, CheckedColorIf m_IconAlign = jj_Left ThenDrawStateText TempHdc, 0, 0, CheckMark, Len(CheckMark), -1, CheckY, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)ElseDrawStateText TempHdc, 0, 0, CheckMark, Len(CheckMark), ucWidth - 14, CheckY, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End IfEnd If'Tegn rammenhPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hPenIf m_IconAlign = jj_Left ThenLineTo TempHdc, Size, 0LineTo TempHdc, Size, SizeLineTo TempHdc, 0, SizeLineTo TempHdc, 0, 0ElseMoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, SizeLineTo TempHdc, ucWidth - (Size + 1), SizeLineTo TempHdc, ucWidth - (Size + 1), 0LineTo TempHdc, ucWidth, 0End IfDeleteObject hPenMousePos = -1'MouseDownCase Is = 2'Tegn gradert mørk grå stor firkantFarge.ColorLT = RGB(176, 176, 167)Farge.ColorRT = RGB(215, 213, 200)Farge.ColorRB = RGB(241, 239, 223)Farge.ColorLB = RGB(215, 213, 200)Call FadeTriangel(Farge, rc, True, TempHdc)'Tegn grønn mindre firkant om den er checkedIf m_Value = True Then' hBrush = CreateSolidBrush(CheckedColor)' hPen = CreatePen(PS_SOLID, 1, CheckedColor)' SelectObject TempHdc, hBrush' SelectObject TempHdc, hPen' If m_IconAlign = jj_Left Then' Rectangle TempHdc, 3, 3, 10, 10' Else' rc.Left = ucWidth - 10' rc.Top = 3' rc.Right = ucWidth - 3' rc.Bottom = 10' Rectangle TempHdc, rc.Left, rc.Top, rc.Right, rc.Bottom' End If' DeleteObject hPen' DeleteObject hBrushWith UserControl.FontName = "Marlett".FontSize = 12.FontItalic = False.FontBold = False.FontStrikethru = False.FontUnderline = FalseEnd WithSetTextColor TempHdc, CheckedColorIf m_IconAlign = jj_Left ThenDrawStateText TempHdc, 0, 0, CheckMark, Len(CheckMark), -1, CheckY, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)ElseDrawStateText TempHdc, 0, 0, CheckMark, Len(CheckMark), ucWidth - 14, CheckY, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End IfEnd If'Tegn rammenhPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hPenIf m_IconAlign = jj_Left ThenLineTo TempHdc, Size, 0LineTo TempHdc, Size, SizeLineTo TempHdc, 0, SizeLineTo TempHdc, 0, 0ElseMoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, SizeLineTo TempHdc, ucWidth - (Size + 1), SizeLineTo TempHdc, ucWidth - (Size + 1), 0LineTo TempHdc, ucWidth, 0End IfDeleteObject hPenUserControl.RefreshEnd Select'Skriv tekstenIf MousePos <> 0 Then'Sett tilbake til gamle font verdierWith UserControl.FontName = lOldFont.Name.FontSize = lOldFont.Size.FontBold = lOldFont.Bold.FontItalic = lOldFont.Italic.FontStrikethru = lOldFont.Strikethru.FontUnderline = lOldFont.UnderlineEnd WithSetTextColor TempHdc, m_ForeColorIf m_Caption <> "" Then'Skriv på venstre sideIf m_IconAlign = jj_Left ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), 15 + m_IconSpace, 0, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)'Skriv på venstre sideElseDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), m_IconSpace, 0, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End IfEnd IfUserControl.RefreshEnd IfEnd SubPrivate Sub TegnOptionboxKnapp(uHdc As Long, MousePos As Integer)On Error Resume NextDim CheckMark As StringDim pnt As POINTAPIDim rc As RECTDim Farge As TRIANGEL_COLORDim hPen As LongDim hBrush As LongDim CheckedColor As LongConst Size As Integer = 12Dim a As IntegerDim TempHdc As LongTempHdc = pic1.hdcSet pic1.Font = UserControl.Font'Juster plassering i forhold til høyre/venstre justeringIf m_IconAlign = jj_Left Thena = 0Elsea = ucWidth - 13End Ifrc.Left = 1 + arc.Top = 1rc.Right = 12 + arc.Bottom = 12'Tegne med blålig eller lys grå om kontrollen er enabled/disabledIf UserControl.Enabled = True ThenBorderColor = RGB(28, 81, 128) 'Blålig fargeCheckedColor = RGB(33, 161, 33) 'GrønnligElseBorderColor = RGB(182, 180, 167) 'Grålig 'RGB(202, 200, 187)End If'Sett valgt bakgrunnsfarge om dette er valgthBrush = CreateSolidBrush(TranslateColor(m_BackColor))hPen = CreatePen(PS_SOLID, 1, TranslateColor(m_BackColor))SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrush'Kopier inn bakgrunnen fra formen om dette er valgtIf m_CopyBGSource = jj_Form ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, UserControl.Parent.hdc, _UserControl.ScaleX(UserControl.Extender.Left, UserControl.Parent.ScaleMode, vbPixels), _UserControl.ScaleY(UserControl.Extender.Top, UserControl.Parent.ScaleMode, vbPixels), vbSrcCopy'Kopier inn bakgrunnen fra en picturebox om dette er valgtElseIf m_CopyBGSource = jj_PictureBox ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, m_CopyBGBoxName.hdc, _m_CopyBGBoxName.ScaleX(UserControl.Extender.Left, m_CopyBGBoxName.ScaleMode, vbPixels), _m_CopyBGBoxName.ScaleY(UserControl.Extender.Top, m_CopyBGBoxName.ScaleMode, vbPixels), vbSrcCopy'Kopier inn bakgrunnen fra en jjbox om dette er valgtElseIf m_CopyBGSource = jj_Box ThenIf Ambient.UserMode = True ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, m_CopyBGBoxName.hdc, _UserControl.Extender.Left / 15, _UserControl.Extender.Top / 15, vbSrcCopyEnd IfEnd IfSelect Case MousePos'MouseLeave og ved initieringCase Is = 0'Tegn gradert grå stor firkantIf UserControl.Enabled = True ThenFarge.ColorLT = RGB(215, 215, 210)Farge.ColorRT = RGB(241, 241, 239)Farge.ColorRB = RGB(255, 255, 255)Farge.ColorLB = RGB(241, 241, 239)Call FadeTriangel(Farge, rc, True, TempHdc)'Tegn hvit stor firkant om den er disabletElseIf UserControl.Enabled = False ThenhBrush = CreateSolidBrush(vbWhite)hPen = CreatePen(PS_SOLID, 1, vbWhite)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, rc.Left, rc.Top, rc.Right, rc.BottomDeleteObject hPenDeleteObject hBrushEnd If'Tegn en liten sirkel om den er checkedIf m_Value = True Then'Om den er enabled(grønnlig)If UserControl.Enabled = True ThenhBrush = CreateSolidBrush(CheckedColor)hPen = CreatePen(PS_SOLID, 1, CheckedColor)'Om den er disabled(grålig)ElseIf UserControl.Enabled = False ThenhBrush = CreateSolidBrush(BorderColor)hPen = CreatePen(PS_SOLID, 1, BorderColor)End IfSelectObject TempHdc, hBrushSelectObject TempHdc, hPenIf m_IconAlign = jj_Left ThenEllipse TempHdc, 3, 3, 10, 10Elserc.Left = ucWidth - 10rc.Top = 3rc.Right = ucWidth - 3rc.Bottom = 10Ellipse TempHdc, rc.Left, rc.Top, rc.Right, rc.BottomEnd IfDeleteObject hPenDeleteObject hBrushEnd If'Tegn rammenhPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hPenIf m_IconAlign = jj_Left ThenLineTo TempHdc, Size, 0LineTo TempHdc, Size, SizeLineTo TempHdc, 0, SizeLineTo TempHdc, 0, 0ElseMoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, SizeLineTo TempHdc, ucWidth - (Size + 1), SizeLineTo TempHdc, ucWidth - (Size + 1), 0LineTo TempHdc, ucWidth, 0End IfDeleteObject hPenMousePos = -1'MouseOverCase Is = 1'Tegn gradert oransje stor firkantFarge.ColorLT = RGB(255, 240, 207)Farge.ColorRT = RGB(251, 200, 99)Farge.ColorRB = RGB(248, 179, 48)Farge.ColorLB = RGB(251, 200, 99)Call FadeTriangel(Farge, rc, True, TempHdc)'Tegn grønn mindre firkant om den er checkedIf m_Value = True ThenhBrush = CreateSolidBrush(CheckedColor)hPen = CreatePen(PS_SOLID, 1, CheckedColor)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenIf m_IconAlign = jj_Left ThenEllipse TempHdc, 3, 3, 10, 10Elserc.Left = ucWidth - 10rc.Top = 3rc.Right = ucWidth - 3rc.Bottom = 10Ellipse TempHdc, rc.Left, rc.Top, rc.Right, rc.BottomEnd IfDeleteObject hPenDeleteObject hBrushEnd If'Tegn rammenhPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hPenIf m_IconAlign = jj_Left ThenLineTo TempHdc, Size, 0LineTo TempHdc, Size, SizeLineTo TempHdc, 0, SizeLineTo TempHdc, 0, 0ElseMoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, SizeLineTo TempHdc, ucWidth - (Size + 1), SizeLineTo TempHdc, ucWidth - (Size + 1), 0LineTo TempHdc, ucWidth, 0End IfDeleteObject hPenMousePos = -1'MouseDownCase Is = 2'Tegn gradert mørk grå stor firkantFarge.ColorLT = RGB(176, 176, 167)Farge.ColorRT = RGB(215, 213, 200)Farge.ColorRB = RGB(241, 239, 223)Farge.ColorLB = RGB(215, 213, 200)Call FadeTriangel(Farge, rc, True, TempHdc)'Tegn grønn mindre firkant om den er checkedIf m_Value = True ThenhBrush = CreateSolidBrush(CheckedColor)hPen = CreatePen(PS_SOLID, 1, CheckedColor)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenIf m_IconAlign = jj_Left ThenEllipse TempHdc, 3, 3, 10, 10Elserc.Left = ucWidth - 10rc.Top = 3rc.Right = ucWidth - 3rc.Bottom = 10Ellipse TempHdc, rc.Left, rc.Top, rc.Right, rc.BottomEnd IfDeleteObject hPenDeleteObject hBrushEnd If'Tegn rammenhPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hPenIf m_IconAlign = jj_Left ThenLineTo TempHdc, Size, 0LineTo TempHdc, Size, SizeLineTo TempHdc, 0, SizeLineTo TempHdc, 0, 0ElseMoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, SizeLineTo TempHdc, ucWidth - (Size + 1), SizeLineTo TempHdc, ucWidth - (Size + 1), 0LineTo TempHdc, ucWidth, 0End IfDeleteObject hPenUserControl.RefreshEnd Select'Skriv tekstenIf MousePos <> 0 ThenSetTextColor TempHdc, m_ForeColorIf m_Caption <> "" Then'Skriv på venstre sideIf m_IconAlign = jj_Left ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), 15 + m_IconSpace, 0, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)'Skriv på venstre sideElseDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), m_IconSpace, 0, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End IfEnd IfUserControl.RefreshEnd IfEnd SubPrivate Sub FinnOs()On Error GoTo PROC_ERRDim sOS As OSVERSIONINFOsOS.dwOSVersionInfoSize = Len(sOS)GetVersionEx sOSIf sOS.dwMajorVersion < 4 ThenMsgBox "Beklager, Windows 95 eller Windows NT 3.51 eller nyere kreves.", vbOKOnly + vbInformationElseSelect Case sOS.dwPlatformId'Windows 95-98Case VER_PLATFORM_WIN32_WINDOWSIf CStr(sOS.dwMinorVersion) = 0 ThenOS(0) = 1OS(1) = "Windows 95"ElseIf CStr(sOS.dwMinorVersion) > 0 ThenOS(0) = 2OS(1) = "Windows 98"End If'Windows NT 3.51 - 4.0 - 2000 - XPCase VER_PLATFORM_WIN32_NTOS(0) = CStr(sOS.dwMajorVersion)OS(2) = CStr(sOS.dwMinorVersion) 'Win2000=0, WinXP=1If CStr(sOS.dwMajorVersion) = 3 ThenOS(1) = "Windows NT 3." & CStr(sOS.dwMinorVersion)ElseIf CStr(sOS.dwMajorVersion) = 4 ThenOS(1) = "Windows NT 4." & CStr(sOS.dwMinorVersion)ElseIf CStr(sOS.dwMajorVersion) = 5 ThenIf CStr(sOS.dwMinorVersion) = 0 ThenOS(1) = "Windows 2000"ElseIf CStr(sOS.dwMinorVersion) = 1 ThenOS(1) = "Windows XP"End IfEnd IfCase ElseOS(0) = "0"OS(1) = ""End SelectEnd IfPROC_EXIT:Exit SubPROC_ERR:GoTo PROC_EXITEnd SubPrivate Sub TegnHooverKnapp(uHdc As Long, MousePos As Integer)On Error Resume NextDim pnt As POINTAPIDim hBrush As LongDim hPen As LongDim Skyv As IntegerDim DisColor As LongDim TempHdc As LongTempHdc = pic1.hdcSet pic1.Font = UserControl.FontDisColor = RGB(64, 64, 64)If UserControl.Enabled = False ThenDisColor = RGB(150, 150, 150)End IfSelect Case MousePos'MouseLeave og ved initieringCase Is = 0'Ramme og bakgrunn tegnes i valgt bakgrunnsfargehBrush = CreateSolidBrush(DefaultColor)hPen = CreatePen(PS_SOLID, 1, DefaultColor)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrush'Kopier inn bakgrunnen fra formen om dette er valgtIf m_CopyBGSource = jj_Form ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, UserControl.Parent.hdc, _UserControl.ScaleX(UserControl.Extender.Left, UserControl.Parent.ScaleMode, vbPixels), _UserControl.ScaleY(UserControl.Extender.Top, UserControl.Parent.ScaleMode, vbPixels), vbSrcCopy'Kopier inn bakgrunnen fra en picturebox om dette er valgtElseIf m_CopyBGSource = jj_PictureBox ThenIf Ambient.UserMode = True ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, m_CopyBGBoxName.hdc, _m_CopyBGBoxName.ScaleX(UserControl.Extender.Left, m_CopyBGBoxName.ScaleMode, vbPixels), _m_CopyBGBoxName.ScaleY(UserControl.Extender.Top, m_CopyBGBoxName.ScaleMode, vbPixels), vbSrcCopyEnd If'Kopier inn bakgrunnen fra en jjbox om dette er valgtElseIf m_CopyBGSource = jj_Box ThenIf Ambient.UserMode = True ThenBitBlt TempHdc, 0, 0, ucWidth, ucHeight, m_CopyBGBoxName.hdc, _UserControl.Extender.Left / 15, _UserControl.Extender.Top / 15, vbSrcCopyEnd IfEnd IfMousePos = -1Skyv = 0'MouseOverCase Is = 1'Tegn rektangel med hvit rammehBrush = CreateSolidBrush(DefaultColor)hPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrush'To grå streker(høyre/bunn)hPen = CreatePen(PS_SOLID, 1, DisColor)SelectObject TempHdc, hPenMoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, ucHeight - 1LineTo TempHdc, -1, ucHeight - 1DeleteObject hPen'MouseDownCase Is = 2'Tegn rektangel med grå rammehBrush = CreateSolidBrush(DefaultColor)hPen = CreatePen(PS_SOLID, 1, DisColor)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrush'To hvite streker(høyre/bunn)hPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hPenMoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, ucHeight - 1LineTo TempHdc, -1, ucHeight - 1DeleteObject hPenSkyv = 1End SelectIf MousePos <> 0 Then'Tegn Caption vanlig eller disabledSetTextColor TempHdc, m_ForeColorIf m_Caption <> "" ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), CaptionL + Skyv, CaptionT + Skyv, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End If'Tegn Ikon vanlig eller disabledIf m_IconDefault ThenIf UserControl.Enabled = True Thenpic1.PaintPicture m_IconDefault, IconL + Skyv, IconT + SkyvElseDrawState TempHdc, 0, 0, m_IconDefault.Handle, 0, IconL + Skyv, IconT + Skyv, 0, 0, DST_ICON Or DSS_DISABLEDEnd IfEnd IfEnd IfEnd SubPrivate Sub TegnStandardKnapp(uHdc As Long, MousePos As Integer)On Error Resume NextDim pnt As POINTAPIDim hBrush As LongDim hPen As LongDim Skyv As IntegerDim DisColor As LongDim TempHdc As LongTempHdc = pic1.hdcSet pic1.Font = UserControl.FontDisColor = RGB(64, 64, 64)If UserControl.Enabled = False ThenDisColor = RGB(150, 150, 150)End IfSelect Case MousePos'MouseLeave og ved initieringCase Is = 0'Ramme og bakgrunn tegnes i valgt bakgrunnsfargehBrush = CreateSolidBrush(DefaultColor)hPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrush'To grå streker(høyre/bunn)hPen = CreatePen(PS_SOLID, 1, DisColor)SelectObject TempHdc, hPenMoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, ucHeight - 1LineTo TempHdc, -1, ucHeight - 1DeleteObject hPenMousePos = -1Skyv = 0'MouseOverCase Is = 1'Tegn rektangel med hvit rammehBrush = CreateSolidBrush(DefaultColor)hPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrush'To grå streker(høyre/bunn)hPen = CreatePen(PS_SOLID, 1, DisColor)SelectObject TempHdc, hPenMoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, ucHeight - 1LineTo TempHdc, -1, ucHeight - 1DeleteObject hPen'MouseDownCase Is = 2'Tegn rektangel med grå rammehBrush = CreateSolidBrush(DefaultColor)hPen = CreatePen(PS_SOLID, 1, DisColor)SelectObject TempHdc, hBrushSelectObject TempHdc, hPenRectangle TempHdc, 0, 0, ucWidth, ucHeightDeleteObject hPenDeleteObject hBrush'To hvite streker(høyre/bunn)hPen = CreatePen(PS_SOLID, 1, BorderColor)SelectObject TempHdc, hPenMoveToEx TempHdc, ucWidth - 1, 0, pntLineTo TempHdc, ucWidth - 1, ucHeight - 1LineTo TempHdc, -1, ucHeight - 1DeleteObject hPenUserControl.RefreshSkyv = 1End SelectIf MousePos <> 0 Then'Tegn Caption vanlig eller disabledSetTextColor TempHdc, m_ForeColorIf m_Caption <> "" ThenDrawStateText TempHdc, 0, 0, m_Caption, Len(m_Caption), CaptionL + Skyv, CaptionT + Skyv, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)End If'Tegn Ikon vanlig eller disabledIf m_IconDefault ThenIf UserControl.Enabled = True Thenpic1.PaintPicture m_IconDefault, IconL + Skyv, IconT + SkyvElseDrawState TempHdc, 0, 0, m_IconDefault.Handle, 0, IconL + Skyv, IconT + Skyv, 0, 0, DST_ICON Or DSS_DISABLEDEnd IfEnd If'UserControl.RefreshEnd IfEnd SubPrivate Sub TekstOgIkon(MousePos As Integer, uHdc As Long, Skyv As Integer)' If MousePos <> 0 Then' 'Tegn Caption vanlig eller disabled' SetTextColor uHdc, m_ForeColor' If m_Caption <> "" Then' DrawStateText uHdc, 0, 0, m_Caption, Len(m_Caption), CaptionL + Skyv, CaptionT + Skyv, 0, 0, DST_PREFIXTEXT Or IIf(UserControl.Enabled, DSS_NORMAL, DSS_DISABLED)' End If'' 'Tegn Ikon vanlig eller disabled' If m_IconDefault Then' If UserControl.Enabled = True Then' UserControl.PaintPicture m_IconDefault, IconL + Skyv, IconT + Skyv' Else' DrawState uHdc, 0, 0, m_IconDefault.Handle, 0, IconL + Skyv, IconT + Skyv, 0, 0, DST_ICON Or DSS_DISABLED' End If' End If' UserControl.Refresh' End IfEnd Sub'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=13,0,0,Public Property Get GruppeID() As StringAttribute GruppeID.VB_Description = "Om det er valgt Option-knapp, settes en identisk ID på de som hører sammen."GruppeID = m_GruppeIDEnd PropertyPublic Property Let GruppeID(ByVal New_GruppeID As String)m_GruppeID = New_GruppeIDPropertyChanged "GruppeID"End Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=7,0,0,5000Public Property Get jjToolTipTime() As IntegerAttribute jjToolTipTime.VB_Description = "Tid i millisekunder tooltipen skal vises."jjToolTipTime = m_jjToolTipTimeEnd PropertyPublic Property Let jjToolTipTime(ByVal New_jjToolTipTime As Integer)'Min og maks verdierIf New_jjToolTipTime < 1000 Then New_jjToolTipTime = 1000If New_jjToolTipTime > 30000 Then New_jjToolTipTime = 30000m_jjToolTipTime = New_jjToolTipTimePropertyChanged "jjToolTipTime"End Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=0,0,0,0Public Property Get Repeat() As BooleanAttribute Repeat.VB_Description = "Settes til True om knappen skal repetere når musen holdes nede, gjelder bare om Mode=jj_Command"Repeat = m_RepeatEnd PropertyPublic Property Let Repeat(ByVal New_Repeat As Boolean)If m_Mode = jj_Command Thenm_Repeat = New_RepeatElsem_Repeat = FalseEnd IfPropertyChanged "Repeat"End PropertyPrivate Sub RundeHjorner(hdc As Long)Dim Pixclr As LongPixclr = GetPixel(hdc, 1, 3)SetPixelV hdc, 1, 2, PixclrPixclr = GetPixel(hdc, 3, 1)SetPixelV hdc, 2, 1, PixclrPixclr = GetPixel(hdc, ucWidth - 5, 1)SetPixelV hdc, ucWidth - 4, 1, PixclrPixclr = GetPixel(hdc, ucWidth - 3, 3)SetPixelV hdc, ucWidth - 3, 2, PixclrPixclr = GetPixel(hdc, ucWidth - 3, ucHeight - 5)SetPixelV hdc, ucWidth - 3, ucHeight - 4, PixclrPixclr = GetPixel(hdc, ucWidth - 5, ucHeight - 3)SetPixelV hdc, ucWidth - 4, ucHeight - 3, PixclrPixclr = GetPixel(hdc, 1, ucHeight - 5)SetPixelV hdc, 1, ucHeight - 4, PixclrPixclr = GetPixel(hdc, 3, ucHeight - 3)SetPixelV hdc, 2, ucHeight - 3, PixclrEnd Sub'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=15,0,0,0Public Property Get CopyBGBoxName() As ControlSet CopyBGBoxName = m_CopyBGBoxNameEnd PropertyPublic Property Set CopyBGBoxName(ByVal New_CopyBGBoxName As Control)Set m_CopyBGBoxName = New_CopyBGBoxNamePropertyChanged "CopyBGBoxName"Call HighLight(-1, -1, -1, False)End Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=7,0,0,0Public Property Get CopyBGSource() As jjCopyBGSourceAttribute CopyBGSource.VB_Description = "Settes til Form eller PicturBox, velges PictureBox må CopyBGBoxName settes i formens Load prosedyre."CopyBGSource = m_CopyBGSourceEnd PropertyPublic Property Let CopyBGSource(ByVal New_CopyBGSource As jjCopyBGSource)m_CopyBGSource = New_CopyBGSourcePropertyChanged "CopyBGSource"tmr1.Enabled = TrueEnd Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=10,0,0,0Public Property Get jjTabBorderColor() As OLE_COLORAttribute jjTabBorderColor.VB_Description = "Rammefarge på jjTab knapp."jjTabBorderColor = m_jjTabBorderColorEnd PropertyPublic Property Let jjTabBorderColor(ByVal New_jjTabBorderColor As OLE_COLOR)m_jjTabBorderColor = New_jjTabBorderColorPropertyChanged "jjTabBorderColor"Call HighLight(-1, -1, -1, False)End Property'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!'MemberInfo=10,0,0,0Public Property Get jjTabSelectedColor() As OLE_COLORAttribute jjTabSelectedColor.VB_Description = "Farge på toppstreken på jjTab knapp når den er valgt."jjTabSelectedColor = m_jjTabSelectedColorEnd PropertyPublic Property Let jjTabSelectedColor(ByVal New_jjTabSelectedColor As OLE_COLOR)m_jjTabSelectedColor = New_jjTabSelectedColorPropertyChanged "jjTabSelectedColor"Call HighLight(-1, -1, -1, False)End Property