FASTLib. Open Source

Re: FASTLib. Open Source

Postby xmanuel » Tue Jun 28, 2011 8:23 pm

Qué bueno!!! cuánto aprendí con ella!!!

Yo he añadido un poco más a la clase Menu...

Code: Select all  Expand view

#include "dialog.ch"
#include "inkey.ch"

//----------------------------------------------------------------------------//

CLASS Menu FROM Visual

   DATA   aItems
   DATA   nOption

   METHOD New() CONSTRUCTOR        // MnuNew
   METHOD Display    // MnuDisplay
   METHOD Hide       // MnuHide
   METHOD Click      // MnuClick
   METHOD KeyPressed // MnuKey
   METHOD SetOption  // MnuSetOption
   METHOD GoTop      // MnuGoTop
   METHOD GoBottom   // MnuGoBottom
   METHOD GoUp       // MnuGoUp
   METHOD GoDown     // MnuGoDown
   METHOD GoLeft     // MnuGoLeft
   METHOD GoRight    // MnuGoRight
   METHOD SetColor   // MnuSetColor
   METHOD nExec      // nMnuExec
   METHOD AddItem    // MnuAddItem
   METHOD SetFocus   // MnuSetFocus
   METHOD lIsOver    // lMnuIsOver
   METHOD cGetHotKey // cMnuGetHotKey
   METHOD nHotAt     // nMnuHotAt

ENDCLASS

//----------------------------------------------------------------------------//

METHOD New() CLASS Menu

   ::Parent:New()

   ::aItems     = {}
   ::nOption    = 0
   ::cClrNormal = "N/BG"
   ::cClrFocus  = "W+/N"

return Self

//----------------------------------------------------------------------------//

METHOD Display() CLASS Menu

   AEval( ::aItems, { | oItem | oItem:Show() } )

return nil

//----------------------------------------------------------------------------//

METHOD Hide() CLASS Menu

   if ::nOption != 0
      ::aItems[ ::nOption ]:SetFocus( .f., ::cClrFocus )
   endif
   AEval( ::aItems, { | oItem | oItem:Hide() } )
   ::Parent:Hide()
   ::nOption = 0

return nil

//----------------------------------------------------------------------------//

METHOD Click( nRow, nCol ) CLASS Menu

   local nAt

   do while lMPressed()
      nAt := AScan( ::aItems, { | oItem | oItem:lIsOver( nRow, nCol ) } )
      if nAt != 0 .and. nAt != ::nOption
         ::SetOption( nAt )
      endif
      MUpdate()
      nRow = nMRow()
      nCol = nMCol()
   enddo

return nil

//----------------------------------------------------------------------------//

METHOD Key( nKey ) CLASS Menu

   local nHotAt

   do case
      case nKey == K_ESC
           ::aItems[ ::nOption ]:SetFocus( .f., ::cClrFocus )
           ::nOption  = 0
           ::lEndExec = .t.

      case nKey == K_ENTER
           ::lEndExec = .t.

      case nKey == K_LEFT
           ::GoLeft()

      case nKey == K_RIGHT
           ::GoRight()

      case nKey == K_UP
           ::GoUp()

      case nKey == K_DOWN
           ::GoDown()

      case nKey == K_HOME
           ::GoTop()

      case nKey == K_END
           ::GoBottom()

      case ( nHotAt := ::nHotAt( Chr( nKey ) ) ) != ::nOption
           if nHotAt != 0
              ::SetOption( nHotAt )
           endif
   endcase

return nil

//----------------------------------------------------------------------------//

METHOD SetOption( nNewOption ) CLASS Menu

   if ::nOption != nNewOption
      if ::nOption != 0
         ::aItems[ ::nOption ]:SetFocus( .f. )
      endif
      ::nOption = nNewOption
      if ::nOption != 0
         ::aItems[ ::nOption ]:SetFocus( .t., ::cClrFocus )
         if ::oParent != nil
            ::oParent:MnuSelect( Self )
         endif
      endif
   endif

return nil

//----------------------------------------------------------------------------//

METHOD GoTop() CLASS Menu

   ::SetOption( 1 )

return nil

//----------------------------------------------------------------------------//

METHOD GoBottom() CLASS Menu

   ::SetOption( Len( ::aItems ) )

return nil

//----------------------------------------------------------------------------//

METHOD GoUp() CLASS Menu

   if ::nOption == 1
      ::SetOption( Len( ::aItems ) )
   else
      ::SetOption( ::nOption - 1 )
   endif

return nil

//----------------------------------------------------------------------------//

METHOD GoDown() CLASS Menu

   if ::nOption == Len( ::aItems )
      ::SetOption( 1 )
   else
      ::SetOption( ::nOption + 1 )
   endif

return nil

//----------------------------------------------------------------------------//

METHOD GoLeft() CLASS Menu

   if ::nOption == 1
      ::SetOption( Len( ::aItems ) )
   else
      ::SetOption( ::nOption - 1 )
   endif

return nil

//----------------------------------------------------------------------------//

METHOD GoRight() CLASS Menu

   if ::nOption == Len( ::aItems )
      ::SetOption( 1 )
   else
      ::SetOption( ::nOption + 1 )
   endif

return nil

//----------------------------------------------------------------------------//

METHOD SetColor( cClrNormal, cClrFocus ) CLASS Menu

   ::cClrNormal = cClrNormal
   ::cClrFocus  = cClrFocus

   AEval( ::aItems,;
   { | oItem | ;
     oItem:cClrNormal := ::cClrNormal, oItem:cClrFocus := ::cClrFocus } )

return nil

//----------------------------------------------------------------------------//

METHOD nExec() CLASS Menu

   ::Exec()

return ::nOption

//----------------------------------------------------------------------------//

METHOD AddItem( oItem ) CLASS Menu

   AAdd( ::aItems, oItem )
   oItem:oParent = Self
   if ::oParent != nil
      ::oParent:MnuChanged( Self )
   endif

return nil

//----------------------------------------------------------------------------//

METHOD SetFocus( lOnOff, cClrFocus ) CLASS Menu

   ::Parent:SetFocus( lOnOff, cClrFocus )
   if lOnOff
      if ::nOption == 0
         ::SetOption( 1 )
      else
         ::aItems[ ::nOption ]:SetFocus( .t., ::cClrFocus )
      endif
   else
      ::aItems[ ::nOption ]:SetFocus( .f. )
   endif

return nil

//----------------------------------------------------------------------------//

METHOD lIsOver( nRow, nCol ) CLASS Menu

return AScan( ::aItems, { | oItem | oItem:lIsOver( nRow, nCol ) } ) != 0

//----------------------------------------------------------------------------//

METHOD cGetHotKey() CLASS Menu

return ""

//----------------------------------------------------------------------------//

METHOD nHotAt( cHotKey ) CLASS Menu

   cHotKey = Upper( cHotKey )

return If( Len( ::aItems ) != 0,;
       AScan( ::aItems, { | oItem | Upper( oItem:cGetHotKey() ) == cHotKey } ),;
       0 )

//----------------------------------------------------------------------------//

 


Se te pasó cambiar el método nExecy yo he añadido " CLASS Menu" a todos los métodos, y además a New() le he dicho que es el constructor... porque la idea, entiendo, es que funciones con el motor OOP de Harbour no? :mrgreen:

Saludos
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 756
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: FASTLib. Open Source

Postby mgsoft » Wed Jun 29, 2011 11:53 am

Maestro Antonio,

Muchas gracias por tu generosidad.

Cuando tengas tiempo, ¿por favor podrías pasar a Harbour las funciones de protección de Fivedos?. Creo que sería muy interesante para desarrollar sistemas de protección anti-pirateo.

Por cierto, ¿has pensado en publicar el código de Fivewin 1.0?. Sería muy interesante a efectos didácticos.

Saludos ;)
Saludos,

Eduardo
User avatar
mgsoft
 
Posts: 422
Joined: Mon Aug 17, 2009 12:18 pm
Location: España

Re: FASTLib. Open Source

Postby Antonio Linares » Thu Jun 30, 2011 8:07 am

Todos los módulos de dialog ya compilan en 32 bits :-)

http://code.google.com/p/dialog/downloads/detail?name=dialog32_2.zip&can=2&q=
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41439
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FASTLib. Open Source

Postby Antonio Linares » Thu Jun 30, 2011 8:10 am

Mg,

De momento no tenemos intención de publicar lo que comentas,

Llegará el dia en que se publique todo, pero aun no es ese dia :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41439
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FASTLib. Open Source

Postby mgsoft » Thu Jun 30, 2011 9:48 am

Muchas gracias, y también por permitir la vigencia de Clipper en el siglo XXI con harbour y fwh.

Respecto del sistema de protección de Fivedos, por favor cuando tengas un ratito sería muy intersante. Podrías ponerlo como ejemplo en el FW 07.

;)
Saludos,

Eduardo
User avatar
mgsoft
 
Posts: 422
Joined: Mon Aug 17, 2009 12:18 pm
Location: España

Re: FASTLib. Open Source

Postby thefull » Thu Jun 30, 2011 3:26 pm

Antonio, para generar la libreria, esta linea corrige el problema el test.mak
$(BCDIR)\bin\tlib ..\lib\dialog32.lib -+ .\obj\$&.obj

Estaba sin .\obj\

Muchas gracias por el aporte
Saludos
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
User avatar
thefull
 
Posts: 730
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

Re: FASTLib. Open Source

Postby Antonio Linares » Thu Jun 30, 2011 3:40 pm

Rafa,

Si, gracias. De hecho acabo de subir unos cambios y tutor1 y tutor2 ya arrancan y medio funcionan :-)

Despues de 19 años... jejeje
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41439
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FASTLib. Open Source

Postby Antonio Linares » Thu Jun 30, 2011 6:35 pm

Ejemplos construidos usando Harbour :-)
Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41439
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FASTLib. Open Source

Postby Antonio Linares » Thu Jun 30, 2011 6:39 pm

Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41439
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FASTLib. Open Source

Postby Antonio Linares » Thu Jun 30, 2011 6:48 pm

Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41439
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FASTLib. Open Source

Postby Antonio Linares » Thu Jun 30, 2011 7:21 pm

Ejemplos construidos con Harbour :-)
Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41439
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FASTLib. Open Source

Postby Antonio Linares » Fri Jul 01, 2011 5:18 am

Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41439
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FASTLib. Open Source

Postby Antonio Linares » Fri Jul 01, 2011 5:24 am

Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41439
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FASTLib. Open Source

Postby Antonio Linares » Fri Jul 01, 2011 5:51 am

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41439
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FASTLib. Open Source

Postby mgsoft » Sat Jul 02, 2011 6:45 pm

Antonio,

¿Y por qué en vez de Dialog no pasas a 32 bits Fivedos?. Seguro así que la librería seguirá cumpliendo añitos en el futuro ;).

¿Y no podrías subir Fivewin 1.0?. No encuentro el disco de soft mail y me gustaría recordar la primera versión.

Saludos
Saludos,

Eduardo
User avatar
mgsoft
 
Posts: 422
Joined: Mon Aug 17, 2009 12:18 pm
Location: España

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 15 guests