/* * Xailer source code: * * Page.prg * Clase TPage() * * Copyright 2003, 2007 Jose F. Gimenez * Copyright 2003, 2007 Xailer.com * All rights reserved * */ #include "Xailer.ch" //-------------------------------------------------------------------------- CLASS XPage FROM TScrollingWinControl PUBLISHED: PROPERTY lTransparent INIT .T. PROPERTY nOpacity INIT 0 PUBLIC: PROPERTY nItem INIT 0 METHOD Create( oParent, nItem ) CONSTRUCTOR METHOD Select() INLINE ::oParent:nIndex := ::nItem // --> Nil METHOD Delete() INLINE ::oParent:DeleteItem( ::nItem ) // --> Nil METHOD Enable() // --> .T. METHOD Disable() // --> .F. PUBLIC: PROPERTY nLeft PROPERTY nTop PROPERTY nWidth PROPERTY nHeight PROPERTY nAlign INIT alCLIENT PROPERTY nAnchors PROPERTY lVisible INIT .F. PROTECTED: DATA nCtlStyle INIT nOr( WS_CHILD, WS_CLIPSIBLINGS, WS_CLIPCHILDREN ) DATA nClassStyle INIT 0 EVENT OnCheckState EVENT OnClick EVENT OnDblClick EVENT OnEnter EVENT OnExit EVENT OnPaint EVENT OnPainted RESERVED: PROPERTY cText PROPERTY cMessage PROPERTY nClrText PROPERTY lTabStop INIT .F. PROPERTY lBorder INIT .F. PROPERTY l3D INIT .F. METHOD Scale( nScale ) VIRTUAL METHOD WMSetFocus() ENDCLASS //-------------------------------------------------------------------------- METHOD Create( oParent, nItem ) CLASS XPage UPDATE ::oParent TO oParent UPDATE ::nItem TO nItem IF AScan( ::oParent:aItems, {| oItem | oItem == Self } ) == 0 IF Empty( ::nItem ) .OR. ::nItem > Len( ::oParent:aItems ) AAdd( ::oParent:aItems, Self ) ::nItem := Len( ::oParent:aItems ) ELSE AAdd( ::oParent:aItems, Nil ) AIns( ::oParent:aItems, ::nItem ) ::oParent:aItems[ ::nItem ] := Self nItem := ::nItem + 1 WHILE nItem < Len( ::oParent:aItems ) ::oParent:aItems[ nItem ]:nItem := nItem++ ENDDO ENDIF ENDIF WITH OBJECT ::oParent IF ! Empty( :Handle ) IF :nIndex == 0 :nIndex := 1 ENDIF ::SetBounds( 0, 0, :nClientWidth, :nClientHeight ) IF :nIndex == ::nItem ::Show( .F. ) ENDIF ::Super:Create() ENDIF END RETURN Self //-------------------------------------------------------------------------- METHOD WMSetFocus( hCtl ) CLASS XPage LOCAL n, aItems IF ! ::lVisible aItems := ::oParent:aItems FOR n := 1 TO Len( aItems ) IF aItems[ n ] == Self ::oParent:nIndex := n EXIT ENDIF NEXT AEval( aItems, {| oItem | IIf( !( oItem == Self ), oItem:Hide(), ) } ) ::SetBounds( 0, 0, ::nClientWidth, ::nClientHeight ) ::lVisible := .T. ENDIF ::oForm:OnChangeFocus( GetControlFromHandle( hCtl ), Self ) ::oForm:RequestState() ::GoFirstControl() RETURN 0 //-------------------------------------------------------------------------- METHOD Enable() CLASS XPage AEval( ::aControls, {|oCtl| oCtl:Enable() } ) RETURN ::Super:Enable() //-------------------------------------------------------------------------- METHOD Disable() CLASS XPage AEval( ::aControls, {|oCtl| oCtl:Disable() } ) RETURN ::Super:Disable() //--------------------------------------------------------------------------