home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / POS_Cell_Z2101552122008.psc / verna / cb2.ctl < prev   
Text File  |  1999-01-01  |  19KB  |  332 lines

  1. VERSION 5.00
  2. Begin VB.UserControl chameleonButton 
  3.    AutoRedraw      =   -1  'True
  4.    ClientHeight    =   3600
  5.    ClientLeft      =   0
  6.    ClientTop       =   0
  7.    ClientWidth     =   4800
  8.    DefaultCancel   =   -1  'True
  9.    ScaleHeight     =   240
  10.    ScaleMode       =   3  'Pixel
  11.    ScaleWidth      =   320
  12.    Begin VB.Timer OverTimer 
  13.       Enabled         =   0   'False
  14.       Interval        =   3
  15.       Left            =   0
  16.       Top             =   0
  17.    End
  18. End
  19. Attribute VB_Name = "chameleonButton"
  20. Attribute VB_GlobalNameSpace = False
  21. Attribute VB_Creatable = True
  22. Attribute VB_PredeclaredId = False
  23. Attribute VB_Exposed = False
  24. Option Explicit
  25.  
  26. #Const isOCX = False
  27.  
  28. Private Const cbVersion As String = "2.0.6"
  29.  
  30. '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  31. '%             <<< GONCHUKI SYSTEMS >>>               %
  32. '%                                                    %
  33. '%                 CHAMELEON BUTTON                   %
  34. '%         copyright ⌐2001-2002 by gonchuki           %
  35. '%                                                    %
  36. '%  this custom control will emulate the most common  %
  37. '%      command buttons that everyone knows.          %
  38. '%                                                    %
  39. '%  it took me three months to develop this control   %
  40. '% but that was a first step, now eight months after, %
  41. '%  it turned out to be a very professional control.  %
  42. '%                                                    %
  43. '%     ALL THE CODE WAS WRITTEN FROM SCRATCH!!!       %
  44. '%                                                    %
  45. '%   ever wanted to add cool buttons to your app???   %
  46. '%          this is the BEST solution!!!              %
  47. '%                                                    %
  48. '%        Copyright ⌐ 2001-2002 by gonchuki           %
  49. '%                                                    %
  50. '%    Commercial use of this control is FORBIDDEN     %
  51. '%       without explicitly permission from me        %
  52. '%    You can't either use any part of this code      %
  53. '%              without my permission                 %
  54. '%   You can use this code without asking for your    %
  55. '%  personal projects or for freeware, but remember   %
  56. '%           to give credits where its due            %
  57. '%                                                    %
  58. '%  If you are building an OCX version, you MUST set  %
  59. '%      the isOCX constant to true and inlcude the    %
  60. '%          original unmodified about form            %
  61. '%                                                    %
  62. '%            e-mail: gonchuki@yahoo.es               %
  63. '%                                                    %
  64. '%                  MADE IN URUGUAY                   %
  65. '%                                                    %
  66. '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  67.  
  68. '######################################################
  69. '#                    UPDTATE LOG                     #
  70. '#  all times are GMT -03:00                          #
  71. '#                                                    #
  72. '# November 9  - 03:00 am                             #
  73. '#              ╖ first release                       #
  74. '#                                                    #
  75. '# November 9  - 05:00 pm                             #
  76. '#              ╖ added ShowFocusRect property        #
  77. '#              ╖ added repaint before triggering the #
  78. '#                click event                         #
  79. '#                                                    #
  80. '# November 9  - 07:20 pm                             #
  81. '#              ╖ fixed the color shifting so it will #
  82. '#                display the correct color and not a #
  83. '#                weird one.                          #
  84. '#              ╖ improved Java button drawing        #
  85. '#              ╖ added custom colors capability      #
  86. '#                now it looks better than ever COOL! #
  87. '#              ╖ improved Flat button drawing        #
  88. '#                                                    #
  89. '# November 13 - 03:40 pm                             #
  90. '#              ╖ fixed the WinXP button colors and   #
  91. '#                styles. Note that as the colors are #
  92. '#                relative to a base, and for this    #
  93. '#                button i made a color work-around,  #
  94. '#                some colors will be un-reachable    #
  95. '#              ╖ added MouseMove event as requested  #
  96. '#                                                    #
  97. '# November 18 - 10:40 am                             #
  98. '#              ╖ translated all the line methods to  #
  99. '#                API calls. It's now faster than     #
  100. '#                ever. It will also decrease the     #
  101. '#                extra size of your exe!!!           #
  102. '#              ╖ improved Win32 button drawing       #
  103. '#              ╖ moved the direct calls to SetPixel  #
  104. '#                to use less inline .hDC calls       #
  105. '#              ╖ fixed KeyDown/KeyUp events so they  #
  106. '#                now act as they should              #
  107. '#                                                    #
  108. '# November 23 - 3:55 pm  (not updating on PSC...)    #
  109. '#              ╖ upgraded version to 1.1             #
  110. '#              ╖ added FontBold, and other similar   #
  111. '#                properties as requested             #
  112. '#              ╖ greatly improved drawing speed by   #
  113. '#                replacing lots of duplicated code   #
  114. '#                with the new-brand function made by #
  115. '#                me: "DrawFrame"                     #
  116. '#              ╖ fixed MouseDown/MouseUp events so   #
  117. '#                they now act as they should         #
  118. '#              ╖ added MousePointer property         #
  119. '#                                                    #
  120. '# December 1  - 10:10 pm                             #
  121. '#              ╖ replaced the RECT types assignment  #
  122. '#                in the resize event with API calls  #
  123. '#                that take 3/4 the time of raw vb    #
  124. '#              ╖ added "use container" to the color  #
  125. '#                schemes                             #
  126. '#              ╖ button now initializes with it's    #
  127. '#                caption set as it's name            #
  128. '#                                                    #
  129. '# December 23 - 2:00 pm                              #
  130. '#              ╖ finally got all the code in API by  #
  131. '#                replacing the Usercontrol.ForeColor #
  132. '#                calls with CreatePen API            #
  133. '#              ╖ added support for wrapping captions #
  134. '#              ╖ changed a bit the XP button gradient#
  135. '#                thanks to Ghuran Kartal for this    #
  136. '#              ╖ added refresh sub to force a button #
  137. '#                redraw.                             #
  138. '#              ╖ MouseIcon property added            #
  139. '#              ╖ MouseOver/MouseOut events added and #
  140. '#                also a ForeOver property is provided#
  141. '#                to change font color on mouse over. #
  142. '#                this also fixed the WinXP button,   #
  143. '#                which design is now perfect.        #
  144. '#              ╖ added FlatHover button style that is#
  145. '#                the real toolbar button.            #
  146. '#                                                    #
  147. '# January 1  - 11:15 am                 year 2002!!! #
  148. '#              ╖ some minor fixes                    #
  149. '#              ╖ new release!!!                      #
  150. '#                                                    #
  151. '# January 5  - 10:15 am                              #
  152. '#              ╖ fixed the memory leaks (only 1% of  #
  153. '#                gdi is lost per 15-20 runs of demo) #
  154. '#              ╖ the font assignment has changed     #
  155. '#              ╖ fixed a very rare and random bug in #
  156. '#                the XP-button. Problem was in the   #
  157. '#                DrawLine sub. Thanks goes to Dennis #
  158. '#                Vanderspek                          #
  159. '#              ╖ changed Mid and LCase to the faster #
  160. '#                Mid$ and LCase$ way                 #
  161. '#                                                    #
  162. '# January 22  - 11:55 pm                             #
  163. '#              ╖ fixed the "not redrawing" bug under #
  164. '#                Win 2K/NT/ME.                       #
  165. '#              ╖ fixed a bug that prevented hot keys #
  166. '#                to work properly                    #
  167. '#              ╖ fixed the font alignment problem    #
  168. '#                many many thanks to Carles P.V.     #
  169. '#                                                    #
  170. '# February 6  - 4:15 pm                              #
  171. '#              ╖ fixed property assignment problems  #
  172. '#              ╖ fixed "Use Container" color scheme  #
  173. '#              ╖ optimized a bit the code            #
  174. '#              ╖ fixed problem with system colors    #
  175. '#              ╖ added SoftBevel prop to allow the   #
  176. '#                buton to be "flatter"               #
  177. '#                                                    #
  178. '# February 8  - 10:15 pm                             #
  179. '#              ╖ fixed click event when user double  #
  180. '#                clicks on the button                #
  181. '#                                                    #
  182. '# February 10 - 2:35 pm                              #
  183. '#              ╖ added Office XP button style        #
  184. '#              ╖ added "DrawCaption" sub for easier  #
  185. '#                caption management                  #
  186. '#              ╖ changed focus rects for flat buttons#
  187. '#              ╖ added "DisableRefresh" sub to allow #
  188. '#                property changes without repainting #
  189. '#                until needed to do so.              #
  190. '#              ╖ added BackOver property             #
  191. '#                                                    #
  192. '# February 11 - 1:15 am                              #
  193. '#              ╖ added primitive support for pictures#
  194. '#              ╖ fixed colors when mouse re-enters   #
  195. '#                button area while holding the mouse #
  196. '#                button.                             #
  197. '#                                                    #
  198. '# February 12 - 4:30 pm                              #
  199. '#              ╖ finished with the picture property! #
  200. '#              ╖ Java focus rect fixed               #
  201. '#              ╖ Office XP style fixed               #
  202. '#              ╖ Changed "ConvertFromSystemColor" sub#
  203. '#                                                    #
  204. '# February 14 - 6:20 pm                              #
  205. '#              ╖ replaced the transparent blitting   #
  206. '#                function with one 10 times better   #
  207. '#              ╖ joined bitmaps & icons drawing      #
  208. '#              ╖ added "UseGreyscale" option         #
  209. '#                                                    #
  210. '# February 18 - 4:30 pm                              #
  211. '#              ╖ added embossed/engraved/shadowed fx #
  212. '#              ╖ added category for each property    #
  213. '#              ╖ added standard property pages       #
  214. '#                                                    #
  215. '# March 3 - 9:10 pm                                  #
  216. '#              ╖ fixed effects for XP styles         #
  217. '#              ╖ added mouseover detection function  #
  218. '#              ╖ some minor adjustments              #
  219. '#                                                    #
  220. '# March 31 - 2:55 am                                 #
  221. '#              ╖ upgraded to version 2.0             #
  222. '#              ╖ added transparent, 3D Hover and     #
  223. '#                oval button types                   #
  224. '#                                                    #
  225. '# April 1 - 9:45 pm                                  #
  226. '#              ╖ fixed transparent button drawing    #
  227. '#                                                    #
  228. '# April 19 - 6:00 pm                                 #
  229. '#              ╖ fixed Ofice XP button colors        #
  230. '#              ╖ added built-in hand cursor          #
  231. '#                                                    #
  232. '# May 11 - 12:40 pm                                  #
  233. '#              ╖ added KDE 2 button style!           #
  234. '#              ╖ slightly optimized Mac button code  #
  235. '#                                                    #
  236. '# May 16 - 7:00 pm                                   #
  237. '#              ╖ added version property              #
  238. '#              ╖ added complilation options for lite #
  239. '#                version (evaluation purpose only)   #
  240. '#              ╖ some optimizations for drawing fx   #
  241. '#                                                    #
  242. '# May 22 - 5:20 pm                                   #
  243. '#              ╖ added some code to make more robust #
  244. '#                the lite version                    #
  245. '#              ╖ added background picture option     #
  246. '#                                                    #
  247. '# June 29 - 4:00 pm                                  #
  248. '#              ╖ added CheckBoxBehaviour option to   #
  249. '#                allow the button behave as one of em#
  250. '#                                                    #
  251. '# July 25 - 11:55 pm                                 #
  252. '#              ╖ slightly optimized code, specially  #
  253. '#                by removing the slow IIf's          #
  254. '#              ╖ corrected default state for KDE2    #
  255. '#                                                    #
  256. '# August 1 - 12:30 pm                                #
  257. '#              ╖ NEW PUBLIC RELEASE!!!    (ver 2.04) #
  258. '#            2:40 pm                           2.05  #
  259. '#              ╖ button was not updating when "value"#
  260. '#                prop was changed by the code. Thanks#
  261. '#                to Steve and uZiGuLa.               #
  262. '#              ╖ fixed drawing for Win32 button while#
  263. '#                being CheckBox and Value = True     #
  264. '#                                                    #
  265. '# August 2 - 11:30 pm                                #
  266. '#              ╖ fixed (i hope) the problem with the #
  267. '#                WinXP disabled picture              #
  268. '#              ╖ fixed the "not redrawing" problem   #
  269. '#                                                    #
  270. '######################################################
  271.  
  272. Private Declare Function SetPixel Lib "gdi32" Alias "SetPixelV" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
  273.  
  274. Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
  275. Private Const COLOR_HIGHLIGHT = 13
  276. Private Const COLOR_BTNFACE = 15
  277. Private Const COLOR_BTNSHADOW = 16
  278. Private Const COLOR_BTNTEXT = 18
  279. Private Const COLOR_BTNHIGHLIGHT = 20
  280. Private Const COLOR_BTNDKSHADOW = 21
  281. Private Const COLOR_BTNLIGHT = 22
  282.  
  283. Private Declare Function OleTranslateColor Lib "oleaut32.dll" (ByVal lOleColor As Long, ByVal lHPalette As Long, lColorRef As Long) As Long
  284. Private Declare Function GetBkColor Lib "gdi32" (ByVal hdc As Long) As Long
  285. Private Declare Function GetTextColor Lib "gdi32" (ByVal hdc As Long) As Long
  286. Private Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
  287. 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
  288. Private Const DT_CALCRECT = &H400
  289. Private Const DT_WORDBREAK = &H10
  290. Private Const DT_CENTER = &H1 Or DT_WORDBREAK Or &H4
  291.  
  292. Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
  293. Private Declare Function FillRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
  294. Private Declare Function FrameRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
  295. Private Declare Function DrawFocusRect Lib "user32" (ByVal hdc As Long, lpRect As RECT) As Long
  296. Private 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 Long
  297.  
  298. Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  299. Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
  300.  
  301. Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, lpPoint As POINTAPI) As Long
  302. Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
  303. Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
  304. Private Const PS_SOLID = 0
  305.  
  306. Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  307. Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  308. Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
  309. Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
  310. Private Const RGN_DIFF = 4
  311.  
  312. Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
  313. Private Declare Function InflateRect Lib "user32" (lpRect As RECT, ByVal X As Long, ByVal Y As Long) As Long
  314. Private Declare Function OffsetRect Lib "user32" (lpRect As RECT, ByVal X As Long, ByVal Y As Long) As Long
  315. Private Declare Function CopyRect Lib "user32" (lpDestRect As RECT, lpSourceRect As RECT) As Long
  316.  
  317. Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
  318. Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  319.  
  320. Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long
  321.  
  322. Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
  323. Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
  324.  
  325. Private Declare Function GetDIBits Lib "gdi32" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
  326. Private Declare Function SetDIBitsToDevice Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal Scan As Long, ByVal NumScans As Long, Bits As Any, BitsInfo As BITMAPINFO, ByVal wUsage As Long) As Long
  327.  
  328. Private 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 Long
  329. Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
  330. Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
  331. Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
  332. Private Declare Function DrawIconEx Lib "user32" (ByVal hdc As Long, ByVal x