Karinha, te adjunto un modulo donde realizo OverrideAndExtend de las clase de fwh, puedes tomarlo como ejemplo. :-)
/*----------------------------------------------------------------------------*/
#include "prestamos.ch"
#ifdef __HARBOUR__
聽 聽#ifndef __XHARBOUR__
聽 聽 聽 #include "xhb.ch"
聽 聽 聽 #include "xhbcls.ch"
聽 聽#endif
#endif
#include "hbclass.ch"
/*----------------------------------------------------------------------------*/
PROCEDURE OverrideAndExtend()
聽 聽OVERRIDE METHOD GETDLGCODE IN CLASS TBUTTON WITH KGETDLGCODE
聽 聽EXTEND CLASS TCONTROL 聽 聽 WITH METHOD MyDisable
聽 聽EXTEND CLASS TDIALOG 聽 聽 聽WITH METHOD RefreshDialog
聽 聽EXTEND CLASS TFOLDER 聽 聽 聽WITH METHOD GoFirstControl
聽 聽EXTEND CLASS TFOLDER 聽 聽 聽WITH METHOD RefreshPages
聽 聽EXTEND CLASS TXBROWSE 聽 聽 WITH METHOD RefreshTotals
聽 聽EXTEND CLASS TXBROWSE 聽 聽 WITH METHOD SetMyBmpSort
聽 聽EXTEND CLASS TXBROWSE 聽 聽 WITH METHOD MyConfig
聽 聽EXTEND CLASS TMYSQLSERVER WITH METHOD ShowError
RETURN
/*----------------------------------------------------------------------------*/
FUNCTION KGetDlgCode( nLastKey )
聽 聽LOCAL Self := hb_QSelf()
聽 聽::oWnd:nLastKey := nLastKey
聽 聽DO CASE
聽 聽CASE !hb_isNil( ::oWnd:oWnd ) .and. ( ::oWnd:oWnd:IsKindOf( "TFOLDER" ) .or. ::oWnd:oWnd:IsKindOf( "TFOLDEREX" ) )
聽 聽 聽 RETURN DLGC_WANTALLKEYS
聽 聽CASE nLastKey == VK_ESCAPE .and. !hb_isNil( ::oWnd:oWnd ) .and. ( ::oWnd:oWnd:IsKindOf( "TWINDOW" ) .or. ::oWnd:IsKindOf( "TDIALOG" ) .or. ::oWnd:IsKindOf( "TPAGES" ) )
聽 聽 聽 RETURN DLGC_WANTALLKEYS
聽 聽ENDCASE
RETURN NIL
/*----------------------------------------------------------------------------*/
FUNCTION MyDisable( aCtrlType )
聽 聽LOCAL Self := hb_QSelf()
聽 聽IF ( ::ClassName() IN aCtrlType )
聽 聽 聽 ::bWhen := NIL
聽 聽 聽 ::Disable()
聽 聽ENDIF
RETURN NIL
/*----------------------------------------------------------------------------*/
FUNCTION RefreshDialog( nPos )
聽 聽LOCAl Self := hb_QSelf()
聽 聽DEFAULT nPos := 0
聽 聽AEval( ::aControls, { |oCtrl| oCtrl:Refresh() } )
聽 聽IF nPos > 0
聽 聽 聽 IF Between( nPos, 1, Len( ::aControls ) )
聽 聽 聽 聽 聽::aControls[ nPos ]:SetFocus()
聽 聽 聽 ENDIF
聽 聽ENDIF
RETURN NIL
/*----------------------------------------------------------------------------*/
FUNCTION GoFirstControl()
聽 聽LOCAL Self := hb_QSelf()
聽 聽IF Len( ::aDialogs ) > 0 .and. Len( ::aDialogs[ 01 ]:aControls[ 01 ] ) > 0
聽 聽 聽 ::aDialogs[ 1 ]:aControls[ 1 ]:SetFocus()
聽 聽ENDIF
RETURN NIL
/*----------------------------------------------------------------------------*/
FUNCTION RefreshPages( nSelectPage )
聽 聽LOCAl Self := hb_QSelf()
聽 聽LOCAL oPage
聽 聽DEFAULT nSelectPage := 0
聽 聽FOR EACH oPage IN ::aDialogs
聽 聽 聽 AEval( oPage:aControls, {|oCtrl| oCtrl:Refresh() } )
聽 聽NEXT
聽 聽IF Between( nSelectPage, 1, Len( ::aDialogs ) )
聽 聽 聽 ::SetOption( nSelectPage )
聽 聽ENDIF
RETURN NIL
/*----------------------------------------------------------------------------*/
FUNCTION RefreshTotals( lSavePos )
聽 聽LOCAL Self 聽 := hb_QSelf()
聽 聽LOCAL nRecNo := Eval( ::bBookMark )
聽 聽DEFAULT lSavePos := TRUE
聽 聽::MakeTotals()
聽 聽IF lSavePos .and. nRecNo > 0
聽 聽 聽 Eval( ::bBookMark, nRecNo )
聽 聽ENDIF
聽 聽::Refresh()
RETURN NIL
/*----------------------------------------------------------------------------*/
FUNCTION SetMyBmpSort()
聽 聽LOCAL Self := hb_QSelf()
聽 聽LOCAL oBmp, hBmp
聽 聽IF ::aSortBmp[ 1, 1 ] != 0
聽 聽 聽 DeleteObject( ::aSortBmp[ 1, 1 ] )
聽 聽ENDIF
聽 聽IF ::aSortBmp[ 2, 1 ] != 0
聽 聽 聽 DeleteObject( ::aSortBmp[ 2, 1 ] )
聽 聽ENDIF
聽 聽::aSortBmp := {}
聽 聽DEFINE BITMAP oBmp NAME "BMS_ARROWDOWN2"
聽 聽hBmp := oBmp:hBitmap
聽 聽AAdd( ::aSortBmp, { hBmp, 0, nBmpWidth( hBmp ), nBmpHeight( hBmp ), NIL, FALSE } )
聽 聽DEFINE BITMAP oBmp NAME "BMS_ARROWUP2"
聽 聽hBmp := oBmp:hBitmap
聽 聽AAdd( ::aSortBmp, { hBmp, 0, nBmpWidth( hBmp ), nBmpHeight( hBmp ), NIL, FALSE } )
RETURN NIL
/*----------------------------------------------------------------------------*/
FUNCTION MyConfig( lOrder, nFreeze, lCell, lColSize, lSchemeColor, lRowCount )
聽 聽LOCAL Self 聽 := hb_QSelf()
聽 聽LOCAL cAlias := ::cAlias
聽 聽DEFAULT lOrder 聽 聽 聽 := FALSE,;
聽 聽 聽 聽 聽 聽lCell 聽 聽 聽 聽:= FALSE,;
聽 聽 聽 聽 聽 聽lColSize 聽 聽 := FALSE,;
聽 聽 聽 聽 聽 聽lSchemeColor := FALSE,;
聽 聽 聽 聽 聽 聽nFreeze 聽 聽 聽:= 0,;
聽 聽 聽 聽 聽 聽lRowCount 聽 聽:= FALSE
聽 聽::lGDIP 聽 聽 聽 聽 聽 聽 聽 聽 聽:= FALSE
聽 聽::lFlatStyle 聽 聽 聽 聽 聽 聽 := FALSE
聽 聽::nRowHeight 聽 聽 聽 聽 聽 聽 := 24
聽 聽::lRecordSelector 聽 聽 聽 聽:= TRUE
聽 聽::nStretchCol 聽 聽 聽 聽 聽 聽:= STRETCHCOL_LAST
聽 聽::nColDividerStyle 聽 聽 聽 := LINESTYLE_DARKGRAY
聽 聽::lColDividerComplete 聽 聽:= TRUE
聽 聽::nRowDividerStyle 聽 聽 聽 := LINESTYLE_NOLINES
聽 聽//::nColDividerStyle 聽 聽 聽 := LINESTYLE_NOLINES
聽 聽IF !Empty( cAlias )
聽 聽 聽 ::bGoTop 聽 聽 聽 聽 聽 聽 聽:= {|| ( cAlias )->( dbGoTop() ) }
聽 聽 聽 ::bGoBottom 聽 聽 聽 聽 聽 := {|| ( cAlias )->( dbGoBottom() ) }
聽 聽 聽 ::bSkip 聽 聽 聽 聽 聽 聽 聽 := {|n| IIf( hb_isNil( n ), n := 1, ), ( cAlias )->( dbSkipper( n ) ) }
聽 聽 聽 ::bBof 聽 聽 聽 聽 聽 聽 聽 聽:= {|| ( cAlias )->( Bof() ) }
聽 聽 聽 ::bEof 聽 聽 聽 聽 聽 聽 聽 聽:= {|| ( cAlias )->( Eof() ) }
聽 聽 聽 ::bBookMark 聽 聽 聽 聽 聽 := {|n| IIf( hb_isNil( n ), ( cAlias )->( RecNo() ), ( cAlias )->( dbGoTo( n ) ) )}
聽 聽 聽 ::bKeyCount 聽 聽 聽 聽 聽 := {|| ( cAlias )->( ordKeyCount() ) }
聽 聽 聽 ::bKeyNo 聽 聽 聽 聽 聽 聽 聽:= {|| ( cAlias )->( ordKeyNo() 聽 聽) }
聽 聽ENDIF
聽 聽::bClrHeader 聽 聽 聽 聽 聽 聽 := {|| { CLR_BLUE, CLR_BROWTIT, CLR_BLACK } }
聽 聽::bClrSelFocus 聽 聽 聽 聽 聽 := {|| { CLR_WHITE, CLR_MIDNIGHTBLUE } }
聽 聽::bClrFooter 聽 聽 聽 聽 聽 聽 := {|| { CLR_RED, CLR_BROWTIT, CLR_BLACK } }
聽 聽::bClrSel 聽 聽 聽 聽 聽 聽 聽 聽:= {|| { CLR_WHITE, CLR_BLACK } }
聽 聽::l2007 聽 聽 聽 聽 聽 聽 聽 聽 聽:= TRUE
聽 聽::lFullGrid 聽 聽 聽 聽 聽 聽 聽:= FALSE
聽 聽::lAllowColHiding 聽 聽 聽 聽:= FALSE
聽 聽::lAllowColSwapping 聽 聽 聽:= FALSE
聽 聽::lAllowRowSizing 聽 聽 聽 聽:= FALSE
聽 聽::lAllowCopy 聽 聽 聽 聽 聽 聽 := FALSE
聽 聽::lKinetic 聽 聽 聽 聽 聽 聽 聽 := FALSE
聽 聽::lKineticBrw 聽 聽 聽 聽 聽 聽:= FALSE
聽 聽::lHScroll 聽 聽 聽 聽 聽 聽 聽 := FALSE
聽 聽IF nFreeze > 0
聽 聽 聽 ::nFreeze := nFreeze
聽 聽ENDIF
聽 聽IF !lCell
聽 聽 聽 ::nMarqueeStyle := MARQSTYLE_HIGHLROW
聽 聽ELSE
聽 聽 聽 ::bClrRowFocus 聽:= {|| { CLR_BLACK, RGB( 185, 220, 255 ) } }
聽 聽 聽 ::nMarqueeStyle := MARQSTYLE_HIGHLCELL
聽 聽ENDIF
聽 聽//AEval( ::aCols, {|oCol| oCol:cSortOrder := NIL, IIf( !lColSize, ( oCol:lAllowSizing := FALSE ), NIL ) } )
聽 聽AEval( ::aCols, {|oCol| IIf( !lColSize, ( oCol:lAllowSizing := FALSE ), NIL ) } )
聽 聽IF lSchemeColor
聽 聽 聽 ColorScheme( Self )
聽 聽ENDIF
聽 聽IF Type( "nScale" ) != "U" .and. nScale > 1
聽 聽 聽 AEval( ::aCols, {|oCol| IIf( ValType( oCol:nWidth ) == "N", ( oCol:nWidth *= nScale ), NIL ) } )
聽 聽ENDIF
聽 聽IF lRowCount
聽 聽 聽 ::nRecSelWidth 聽:= 50 * IIf( Type( "nScale" ) != "U" .and. nScale > 1, nScale, 1 )
聽 聽 聽 ::nRecSelColor 聽:= CLR_MYCELESTE2
聽 聽 聽 ::bRecSelHeader := "#"
聽 聽 聽 ::bRecSelData 聽 := {|oB| oB:KeyNo }
聽 聽ENDIF
聽 聽::SetMyBmpSort()
RETURN NIL
/*----------------------------------------------------------------------------*/
FUNCTION ShowError()
聽 聽LOCAL Self := hb_QSelf()
聽 聽IF ::nError > 0
聽 聽 聽 MsgStop( ::cError, "MYSQL-ERROR" )
聽 聽ENDIF
RETURN NIL
/*----------------------------------------------------------------------------*/
/*EOF*/
/*----------------------------------------------------------------------------*/