Mini Kabibi Habibi

Current Path : C:/Users/ITO/Desktop/VF9/program files/microsoft visual foxpro 9/ffc/
Upload File :
Current File : C:/Users/ITO/Desktop/VF9/program files/microsoft visual foxpro 9/ffc/_ui.vct

YKVERSION =   3.00_ui.h��M�(_windowhandler_ui.hPixels%Grab bag of window-handling features.1�ldisabledformodal Whether to disable toolbar if modal window is present. Has corresponding access method.
*checkformodalwindow Checks for modal window and disables toolbar.
*ldisabledformodal_access 
	_base.vcxtoolbar_modalawaretoolbar_toolbar1ClassClass_custom_windowhandler1imdiworkspacecolor = 0
Name = "_windowhandler"
custom	_base.vcx_mouseoverfxocurrentcoolcontrol
ohost
PixelsClass1_custom_mouseoverfxcustomPixels_ui.h	_base.vcxYHeight = 22
Left = 0
Top = 0
Width = 33
ShowWindow = 1
Name = "_modalawaretoolbar"
_ui.h����#_modalawaretoolbarvlmouseoverhost Whether mouse is over mousefx host.
ocurrentcoolcontrol
nmargin Extra border between control and highlight.
nhighlightwidth Width of highlight.
ihighlightcolor Color code for highlight.
ishadowcolor Color code for shadow.
*cancelhighlight Cancels highlighting of object.
*highlightme Called in mousemove event of object desiring coolbar highlighting.
�lmouseoverhost = .T.
ocurrentcoolcontrol = (NULL)
nmargin = 2
nhighlightwidth = 2
ihighlightcolor = 0
ishadowcolor = 0
Name = "_mouseoverfx"
�PROCEDURE checkformodalwindow
RETURN THIS.lDisabledForModal
ENDPROC
PROCEDURE ldisabledformodal_access
LOCAL llDisableAll

DO CASE

CASE WONTOP() # WOUTPUT()
  * browse or something... 
  llDisableAll = .F.

CASE TYPE("_SCREEN.ActiveForm") = "U"
  llDisableAll = .F.  

OTHERWISE

  IF TYPE("_SCREEN.ActiveForm.Parent") = "O"
     * formset
      llDisableAll = (_SCREEN.ActiveForm.Parent.WindowType = WINDOWTYPE_MODAL)
  ELSE
      llDisableAll = (_SCREEN.ActiveForm.WindowType = WINDOWTYPE_MODAL)
  ENDIF
  
ENDCASE

THIS.SetAll("Enabled", ;
            NOT llDisableAll)
            
THIS.lDisabledForModal = llDisableAll
            
RETURN llDisableAll

ENDPROC
PROCEDURE Refresh
THIS.CheckForModalWindow()
ENDPROC
imdiworkspacecolor Returns appropriate Windows color for top-level frame window background.
*cascadeforminstances Cascades current set of active forms.
*getcurrenttopformref Returns current frame window -- primarily for top-level form applications, but will work in other cases, returning a reference to _SCREEN if appropriate.
*showcurrenttopform not currently implemented
*invokemenuiteminframe Use to invoke menu item in top-level form applications.
*showwindowinframe not currently implemented
*imdiworkspacecolor_access 
��� ���l%�m��U��������$��C���C����C�C��	��3������	�
���
����T��C����T�������T������T������
T�����#T��CC����N����6��#T��CC����N����6��.T��CC����N���	����6��T�
�����T�
�C���� ����9��(�����������T�	�C��9���%�C�	�f�TOOLBAR����.��
H�����,���
��9�	�C�	����	����T��a������	��	���T��a������	��	��6�.� �C�	������
	��Z�.�����	��	��y�!���	����	�	����.���	������T��a��.�2����L%��
�C�	�fC�f��	��	��	�	����	�	
	����T������T�	�����T�	������T�	��-��%���
C�	�%����J�C�	�%�(���T�������T���C�	�%��T���C�	�%��������T������	B����U
TCFORMNAMETLOMITAUTOCENTEREDFORMS
TNSTARTTOPTNSTARTLEFT
TNSTARTCOLUMN
LNARRANGEDLNCOLUMNLNTOPLNLEFT	LOFORMREFLNPARENTHEIGHTLNSCALEMODELNINDEX
LLALLFORMSLOFRAME
LLINSCREENLLRIGHTFRAMETHISGETCURRENTTOPFORMREF
SHOWWINDOW	SCALEMODEHEIGHT	FORMCOUNTFORMS	BASECLASSNAMEWINDOWSTATEVISIBLE
AUTOCENTERTOPLEFTb����9��C�_SCREEN.ActiveFormb�O�C�9��������
H�Q�R�D��9���.C�_SCREEN.ActiveFormb�O�
�9���	����T���9��7�C�_SCREEN.ActiveFormb�O�
�9���	����T���9���2�R����9��)�%������%�
T�����!����%�C����O��N�T���9����	B����ULOFORM	LOTOPFORM
ACTIVEFORM
SHOWWINDOW	FORMCOUNTFORMS������C����C�C��
	�����������T��CC�f� ����T��C��.����J���(�����
J���(��J��(�����C��UNDO�REDO�CUT�COPY�PASTE�CLEAR�	SELECTALL�FIND�	FINDAGAIN�REPLACE�GOTOLINE�INSERTOBJECT�OBJECT�LINKS���Z%�C��FIND�REPLACE�GOTOLINE�PASTESPECIAL�INSERTOBJECT�OBJECT�LINKS�����T��C��	��T��C����%�C�_MEDIT������s��8��
H��������UNDO��9�T���"_med_undo"��T���\<Undo��!T���KEY CTRL+Z, "Ctrl+Z"�����REDO����T���"_med_redo"��T���Re\<do��!T���KEY CTRL+R, "Ctrl+R"�����CUT����T���
"_med_cut"��T���Cu\<t��!T���KEY CTRL+X, "Ctrl+X"�����COPY��Y�T���"_med_copy"��T���\<Copy��!T���KEY CTRL+C, "Ctrl+C"�����PASTE����T���"_med_paste"��T���\<Paste��!T���KEY CTRL+V, "Ctrl+V"�����CLEAR��
�T���"_med_clear"��T���Cle\<ar��
T��������	SELECTALL��z�T���"_med_slcta"��T���Se\<lect All��!T���KEY CTRL+A, "Ctrl+A"�����FIND����T���"_med_find"��T���	\<Find...��!T���KEY CTRL+F, "Ctrl+F"�����	FINDAGAIN��K�T���"_med_finda"��T���Find A\<gain��!T���KEY CTRL+G, "Ctrl+G"�����REPLACE����T���"_med_repl"��T���R\<eplace...��!T���KEY CTRL+L, "Ctrl+L"�����PASTESPECIAL���T���"_med_pstlk"��T���Paste \<Special...��
T��������GOTOLINE��q�T���"_med_goto"��T���Go to Li\<ne...��
T��������INSERTOBJECT����T���"_med_insob"��T���\<Insert Object...��
T��������OBJECT��&�T���
"_med_obj"��T���\<Object...��
T��������LINKS��x�T���"_med_link"��T���
Lin\<ks...��
T�����2���B�-���T��C��"����lnBarNo = INT(&lnBarNo)
/%�C�BARPROMPT(lnBarNo,[_MEDIT])b�C��"�7DEFINE BAR lnBarNo OF _MEDIT PROMPT lcPrompt &lcKey
�%�C��
��d�t,���
��%�C��
��`�t,������ =SYS(1500,&lcBarNo,"_medit")
%�C��
����t,�����B�UTCACTIONLOTOPWINDOWLCWINDOWNAMELCACTIONLNBARNOLCBARNOLCPROMPTLCKEYTHISGETCURRENTTOPFORMREFNAME0 |�GetSysColor�Win32API�
B�C����UGETSYSCOLORWIN32APIcascadeforminstances,��getcurrenttopformref}��invokemenuiteminframe ��imdiworkspacecolor_accessF��1tE4Q�21��A�AA������AB�B�BA�A�B�Q��AAAA�BA�4���C�s��D�AAAR�AB�3q���a������B�qA�R�1R�1Bq!R�1b�Ab�A����R�a������������������rq��b�q��rBb��rB��AA�AB2�2  6K�`J��!���!#"0)�".PROCEDURE cascadeforminstances
* to stagger existing forms with current frame.
* Returns number of forms arranged.

LPARAMETERS tcFormName,tlOmitAutoCenteredForms,tnStartTop, tnStartLeft, tnStartColumn 

#DEFINE WINDOW_STAGGER_FACTOR   SYSMETRIC(9)
*  window title height

ASSERT EMPTY(tcFormName) OR (VARTYPE(tcFormName) = "C" AND WEXIST(tcFormName))
           
LOCAL lnArranged, lnColumn, lnTop, lnLeft, loFormRef, ;
      lnParentHeight, lnScaleMode, lnIndex, llAllForms, loFrame, llInScreen, ;
      llRightFrame

loFrame = THIS.GetCurrentTopFormRef()
llInScreen = (loFrame.ShowWindow = 0)
      
lnScaleMode = loFrame.ScaleMode
loFrame.ScaleMode = 3

lnArranged = 0
   
lnTop =    IIF(VARTYPE(tnStartTop)  = "N", tnStartTop, 0)
lnLeft =   IIF(VARTYPE(tnStartLeft) = "N", tnStartLeft,0)
lnColumn = IIF(VARTYPE(tnStartColumn) = "N" AND tnStartColumn > 0, ;
               tnStartColumn, 1)
lnParentHeight = loFrame.Height
llAllForms = EMPTY(tcFormName)
   
FOR lnIndex = _SCREEN.FormCount TO 1 STEP -1
    loFormRef = _SCREEN.Forms(lnIndex)
    IF UPPER(loFormRef.BaseClass) == "TOOLBAR"
       LOOP
    ENDIF
    DO CASE
    CASE llInScreen AND ;
       lnIndex = _SCREEN.FormCount AND ;
       INLIST(loFormRef.ShowWindow,0,1)
       llRightFrame = .T.
       * go right ahead and process these windows
    CASE llInScreen AND ;
       loFormRef.ShowWindow = 0
       llRightFrame = .T.
    CASE llInScreen AND ;
       loFormRef.ShowWindow = 2
       LOOP
       * the real problem is ShowWindow = 1
       * where you are mixing them some in Screen
       * and some in top forms.  This has to be
       * taken care of separately in 5, but in 6
       * apparently these windows show up with ShowWindow = 0!!
    CASE INLIST(loFormRef.ShowWindow,0,1) AND ;
       NOT llRightFrame
       * we haven't gotten to the right group of windows yet
       LOOP
    CASE llRightFrame AND loFormRef.ShowWindow = 2
        * we've reached another frame
       EXIT
    CASE loFormRef.ShowWindow = 2 AND loFormRef # loFrame
       * still wrong group
       LOOP
    CASE loFormRef.ShowWindow = 2
       llRightFrame = .T.
       LOOP
       * now we can work on the window group
       * we'll see next in the stack...
    OTHERWISE
        * we're in an appropriate window, cascade it
    ENDCASE
  
    IF (llAllForms OR UPPER(loFormRef.Name) == UPPER(tcFormName)) AND ;
       loFormRef.WindowState = 0 AND loFormRef.Visible AND ;
       (NOT (tlOmitAutoCenteredForms AND loFormRef.AutoCenter))
       
       lnArranged = lnArranged + 1
       loFormRef.Top =  lnTop
       loFormRef.Left = (lnLeft * lnColumn)
       loFormRef.AutoCenter = .F.
       IF lnTop > lnParentHeight - WINDOW_STAGGER_FACTOR
          STORE WINDOW_STAGGER_FACTOR TO lnTop, lnLeft
          lnColumn = lnColumn + 1
       ENDIF
       lnTop = lnTop + WINDOW_STAGGER_FACTOR
       lnLeft = lnLeft + WINDOW_STAGGER_FACTOR       
    ELSE
       * do nothing
    ENDIF
ENDFOR   
loFrame.ScaleMode = lnScaleMode

RETURN lnArranged   

 
ENDPROC
PROCEDURE getcurrenttopformref
LOCAL loForm, loTopForm

* first top form in the list
* will be the current top form.
* DON"T USE THIS METHOD in VFP 5 IF YOU MIX
* _SCREEN-owned forms with topform-Owned
* forms unless you use ShowWindow = 0 for
* all _screen-owned forms! In 6 it appears okay

ASSERT TYPE("_SCREEN.ActiveForm") # "O"  OR ;
       INLIST(_SCREEN.ActiveForm.ShowWindow, 0,1,2)

DO CASE
CASE _SCREEN.FormCount = 0 OR ;
     (TYPE("_SCREEN.ActiveForm") = "O" AND ;
     _SCREEN.ActiveForm.ShowWindow = 0 )     && ShowWindow In Screen
		     
     loTopForm = _SCREEN

CASE (TYPE("_SCREEN.ActiveForm") = "O" AND ;
      _SCREEN.ActiveForm.ShowWindow = 2 )    && ShowWindow As Top Form

     loTopForm = _SCREEN.ActiveForm
		     
OTHERWISE 
		                                       
     FOR EACH loForm IN _SCREEN.Forms  && note: these may be toolbars
                                       && if undocked, but that's okay --
                                       && they are only ShowWIndow 0 or 1.

        IF loForm.ShowWindow = 2 && the first one in the collection will
                                && be "active top form"
           loTopForm = loForm
           EXIT
        ENDIF
     ENDFOR
		     
     IF VARTYPE(loTopForm) # "O"
        loTopForm = _SCREEN
     ENDIF
		          
ENDCASE

RETURN loTopForm     

ENDPROC
PROCEDURE invokemenuiteminframe
LPARAMETERS tcAction
ASSERT VARTYPE(tcAction) = "C" AND (NOT EMPTY(tcAction))

* this method allows us to properly call the items whether the system menu
* exists or not, and whether we're calling from a top form or not, including
* from a context menu.


#DEFINE KNOWN_ACTIONS "UNDO","REDO","CUT","COPY", "PASTE", ;
                      "CLEAR","SELECTALL", "FIND","FINDAGAIN","REPLACE", ;                      
                      "GOTOLINE","INSERTOBJECT","OBJECT","LINKS"
                      
#DEFINE ACTIONS_NEEDING_WINDOW "FIND","REPLACE", ;
                               "GOTOLINE", "PASTESPECIAL", ;
                               "INSERTOBJECT","OBJECT","LINKS" && , ;
                               && "PROPERTIES"
                     
LOCAL loTopWindow, lcWindowName, ;
      lcAction, lnBarno, lcBarNo, lcPrompt, lcKey

* remove spaces and dots, in case somebody is passing
* the actual prompts as tokens...
lcAction = STRTRAN(UPPER(tcAction)," ","")
lcAction = STRTRAN(lcAction,".","")
      
STORE "" TO lcBarNo, lcPrompt, lcWindowName, lcKey
STORE 0 TO lnBarno      
STORE NULL TO loTopWindow

ASSERT INLIST(lcAction,KNOWN_ACTIONS )

IF INLIST(lcAction,ACTIONS_NEEDING_WINDOW )

   loTopWindow = THIS.GetCurrentTopFormRef()
   lcWindowName = WONTOP()
   
ENDIF   


IF CNTBAR("_MEDIT") = 0
   DEFINE POPUP _MEDIT
ENDIF

DO CASE

CASE lcAction == "UNDO"
   lcBarno  = ["_med_undo"]
   lcPrompt = MENUPROMPT_MED_UNDO
   lcKey = MENUKEY_MED_UNDO

CASE lcAction == "REDO"
   lcBarno = ["_med_redo"]
   lcPrompt =  MENUPROMPT_MED_REDO
   lcKey = MENUKEY_MED_REDO

CASE lcAction == "CUT"
   lcBarno = ["_med_cut"]
   lcPrompt = MENUPROMPT_MED_CUT
   lcKey = MENUKEY_MED_CUT

CASE lcAction == "COPY"
   lcBarno = ["_med_copy"]
   lcPrompt = MENUPROMPT_MED_COPY
   lcKey = MENUKEY_MED_COPY
   
CASE lcAction == "PASTE"
   lcBarno =  ["_med_paste"]
   lcPrompt = MENUPROMPT_MED_PASTE
   lcKey = MENUKEY_MED_PASTE

CASE lcAction == "CLEAR"
   lcBarno = ["_med_clear"]
   lcPrompt = MENUPROMPT_MED_CLEAR
   lcKey = MENUKEY_MED_CLEAR

CASE lcAction == "SELECTALL"
   lcBarno = ["_med_slcta"]
   lcPrompt = MENUPROMPT_MED_SLCTA
   lcKey = MENUKEY_MED_SLCTA

CASE lcAction == "FIND"
   lcBarno = ["_med_find"]
   lcPrompt = MENUPROMPT_MED_FIND
   lcKey = MENUKEY_MED_FIND

CASE lcAction == "FINDAGAIN"
   lcBarno = ["_med_finda"]
   lcPrompt = MENUPROMPT_MED_FINDA
   lcKey = MENUKEY_MED_FINDA

CASE lcAction == "REPLACE"
   lcBarno = ["_med_repl"]
   lcPrompt = MENUPROMPT_MED_REPL
   lcKey = MENUKEY_MED_REPL
   
CASE lcAction == "PASTESPECIAL"
   lcBarno = ["_med_pstlk"]
   lcPrompt = MENUPROMPT_MED_PSTLK
   lcKey = MENUKEY_MED_PSTLK
   
CASE lcAction = "GOTOLINE"
   lcBarno = ["_med_goto"]
   lcPrompt = MENUPROMPT_MED_GOTO
   lcKey = MENUKEY_MED_GOTO

CASE lcAction == "INSERTOBJECT"
   lcBarno = ["_med_insob"]
   lcPrompt = MENUPROMPT_MED_INSOB
   lcKey = MENUKEY_MED_INSOB

CASE lcAction == "OBJECT"
   lcBarno = ["_med_obj"]
   lcPrompt =  MENUPROMPT_MED_OBJ
   lcKey = MENUKEY_MED_OBJ

CASE lcAction == "LINKS"
   lcBarno = ["_med_link"]
   lcPrompt = MENUPROMPT_MED_LINK
   lcKey = MENUKEY_MED_LINK
   
*&*	CASE lcAction ==
*&*	   lcBarno = [""]
*&*	   lcPrompt =
*&*	   lcKey = []

OTHERWISE
  * we shouldn't have gotten through ASSERT!
  RETURN .F.

ENDCASE

lnBarNo = STRTRAN(lcBarNo,["],[])
lnBarNo = INT(&lnBarNo)

IF TYPE("BARPROMPT(lnBarNo,[_MEDIT])") # "C"

   DEFINE BAR lnBarNo OF _MEDIT PROMPT lcPrompt &lcKey

ENDIF   

IF NOT ISNULL(loTopWindow)
   ACTI WINDOW (loTopWindow.Name) SAME
   IF NOT EMPTY(lcWindowName)
     ACTI WINDOW (lcWindowName)
   ENDIF
ENDIF

=SYS(1500,&lcBarNo,"_medit")

IF NOT EMPTY(lcWindowName)
   * there's a faint possibility
   * of problems if we have invoked
   * a system dialog, otherwise --
   * especially if the system dialog 
   * was modal or the previous window was modal
   ACTI WINDOW (lcWindowName) && again
ENDIF   

RETURN
ENDPROC
PROCEDURE imdiworkspacecolor_access
DECLARE INTEGER GetSysColor IN Win32API INTEGER nColorAspect

RETURN  GetSysColor(12) 

ENDPROC
�� ��;�%mFF��U~%���
��h�T���a��T����#%�C�THIS.oHost.Nameb�C��]�
������B�a���w�B�-���UTHISLMOUSEOVERHOSTOCURRENTCOOLCONTROLOHOSTCLS���%��C����O�C��f�FORM	��!%�C�
toObject.Nameb�C��T�B�-������T���-��0T��C����C���
����	��%��
����B�-���'�����	�
���
��%�C���
����
������T��������������T�����T�����T�����T�	����T�
����T������T�����T���
��T�����T��C���]����T��C���]����T�
�C���]�����T��C���]�����T��������C����������C����
����T������$��C�����
�����$��C��
���
�����T�����T�����T�����T���	��T���
����UTOOBJECT	BASECLASSLLNEWOBJECTTHISLMOUSEOVERHOSTOCURRENTCOOLCONTROLLIDRAWWIDTHLIDRAWSTYLE
LIDRAWMODELIFORECOLORLISCALEMODELNOTCTOP	LNOTCLEFT
LNOTCWIDTHLNOTCHEIGHTOHOSTCLS	DRAWWIDTH	DRAWSTYLEDRAWMODE	FORECOLOR	SCALEMODENHIGHLIGHTWIDTHNMARGINIHIGHLIGHTCOLORLINEISHADOWCOLOR�%�C�
���B�-���%�C�THISFORMb�O��E�T�������\�T����9��� |�GetSysColor�win32api�T���C����T���C����UTHISOHOSTTHISFORMGETSYSCOLORWIN32APIIHIGHLIGHTCOLORISHADOWCOLOR!	��C��J��(�����UTHISOCURRENTCOOLCONTROLOHOSTcancelhighlight,��highlightme���Init*��Destroy&��1��1�Aq�qA3qRqAr��qAs2�A��������������BB�����B6�qA���AAA5�Q1+M�
7�
�aC]t)��� ��(�%�b6�UB�����UTHISLDISABLEDFORMODAL���
H�����C�C���.�T��-��&�C�_SCREEN.ActiveFormb�U��_�T��-��2���-%�C�_SCREEN.ActiveForm.Parentb�O����T���9���������T���9���������C�Enabled�
����T������	B����ULLDISABLEALL
ACTIVEFORMPARENT
WINDOWTYPETHISSETALLLDISABLEDFORMODAL
��C����UTHISCHECKFORMODALWINDOWcheckformodalwindow,��ldisabledformodal_accessX��Refresh���1�2q���b�����qAB��3�1<k���#)�hPROCEDURE cancelhighlight
IF NOT THIS.lMouseOverHost
   THIS.lMouseOverHost = .T.
   THIS.oCurrentCoolControl = .NULL.
   IF TYPE("THIS.oHost.Name") = "C"
      * the form could be in the process of releasing...   
      THIS.oHost.Cls
   ENDIF
   RETURN .T.
ELSE
   RETURN .F.   
ENDIF

ENDPROC
PROCEDURE highlightme
LPARAMETERS toObject

ASSERT VARTYPE(toObject) = "O" AND UPPER(toObject.BaseClass) # "FORM"
* it won't actually hurt anything if it's called from the form, 
* I guess
* but it doesn't make any sense either

IF TYPE("toObject.Name") # "C"
  RETURN .F.
ENDIF  

LOCAL llNewObject

THIS.lMouseOverHost = .F.  

llNewObject = ISNULL(THIS.oCurrentCoolControl) OR ;
              ((NOT(ISNULL(THIS.oCurrentCoolControl))) AND ;
               THIS.oCurrentCoolControl # toObject )
              * we'd have to do this comparison differently in VFP5... 

IF NOT llNewObject
   RETURN .F.
ENDIF              

LOCAL liDrawWidth, liDrawStyle, liDrawMode, liForeColor, liScaleMode, ;
      lnOTCTop, lnOTCLeft, lnOTCWidth, lnOTCHeight

IF NOT ISNULL(THIS.oCurrentCoolControl)
   THIS.oHost.Cls && get rid of old highlight
ENDIF
THIS.oCurrentCoolControl = toObject

WITH THIS.oHost 
      
   * save host properties:
   liDrawWidth = .DrawWidth
   liDrawStyle = .DrawStyle
   liDrawMode  = .DrawMode
   liForeColor = .ForeColor
   liScaleMode = .ScaleMode
      
   * set host properties:
   .DrawWidth = THIS.nHighlightWidth
   .DrawStyle = 0 && solid
   .DrawMode = 13 && copy
   .ScaleMode = 3 && pixels
            
   * get object positioning relative to host and
   * leave some room for the highlight:
   lnOTCTop = OBJTOCLIENT(toObject,1) - THIS.nMargin
   lnOTCLeft = OBJTOCLIENT(toObject,2) - THIS.nMargin
   lnOTCWidth = OBJTOCLIENT(toObject,3) + THIS.nMargin * 2
   lnOTCHeight = OBJTOCLIENT(toObject,4) + THIS.nMargin * 2

   * border the current control with four lines
   * in the appropriate colors
   .ForeColor = THIS.iHighlightColor
   * left control border     
   .Line(lnOTCLeft,lnOTCTop,lnOTCLeft,lnOTCTop+lnOTCHeight)     
   * top control border
   .Line(lnOTCLeft,lnOTCTop,lnOTCLeft+lnOTCWidth,lnOTCTop)     
   
   .ForeColor = THIS.iShadowColor
   * bottom control border
   .Line(lnOTCLeft,lnOTCTop+lnOTCHeight,lnOTCLeft+lnOTCWidth,lnOTCTop+lnOTCHeight)
   * right control border
   .Line(lnOTCLeft+lnOTCWidth,lnOTCTop,lnOTCLeft+lnOTCWidth,lnOTCTop+lnOTCHeight)     
 
   * restore host properties:      
   .DrawWidth = liDrawWidth
   .DrawStyle = liDrawStyle
   .DrawMode  = liDrawMode
   .ForeColor = liForeColor
   .ScaleMode = liScaleMode
   
ENDWITH




ENDPROC
PROCEDURE Init
IF NOT DODEFAULT()
   RETURN .F.
ENDIF   

IF TYPE("THISFORM") = "O"
   THIS.oHost = THISFORM
ELSE
   THIS.oHost = _SCREEN
ENDIF      

* get appropriate color information
DECLARE INTEGER GetSysColor in win32api integer  
THIS.iHighlightColor = GetSysColor(20) && button highlight   
THIS.iShadowColor = GetSysColor(16) && button shadow



ENDPROC
PROCEDURE Destroy
DODEFAULT()
STORE .NULL. TO THIS.oCurrentCoolControl, THIS.oHost
ENDPROC