FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ejemplo BtnBmp "pressed"
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Ejemplo BtnBmp "pressed"
Posted: Wed Apr 24, 2013 10:53 AM

Me refiero a si tememos algun ejemplo donde se use un BtnBmp independiente ( no como boton de barra ) que funcione como si fuera un checkbox .
Gracias anticipadas por la respuesta .

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Ejemplo BtnBmp "pressed"
Posted: Wed Apr 24, 2013 11:42 AM

Manuel,

Revisa el uso de lPressed en FWH/samples/msgdate.prg :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Ejemplo BtnBmp "pressed"
Posted: Wed Apr 24, 2013 03:26 PM
He cambiado el ejemplo testbtnb , pero el resultado no es el esperado :-) , como tendria que modificarlo para que funcione ?
Code (fw): Select all Collapse
#include "FiveWin.ch"

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

function Main()

   local oDlg
   local obtn

   SET _3DLOOK ON

   DEFINE DIALOG oDlg RESOURCE "Main" //COLOR "N/B"

   REDEFINE BTNBMP obtn ID 110 OF oDlg ;
      RESOURCE "Yes" NOBORDER // ACTION oDlg:End()
   
   obtn:lPressed:= .t.
   
   obtn:bAction:= {|o|  if( o:lpressed, msginfo(1),msginfo(2))  , o:lPressed:= !(o:lPressed),o:refresh() }
    
 //  oDlg:aControls[ 1 ]:lTransparent = .t.   

   REDEFINE BTNBMP ID 120 OF oDlg ;
      RESOURCE "No"

   REDEFINE BTNBMP ID 130 OF oDlg ;
      RESOURCE "Cancel"

   ACTIVATE DIALOG oDlg CENTERED

return nil
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Ejemplo BtnBmp "pressed"
Posted: Thu Apr 25, 2013 09:19 AM

Parece que la solución de Daniel es la correcta , se podria implementar en la clase y asi poder suarla como sustituto de los checkbox ( queda muy bien )

viewtopic.php?f=3t=19571p=103143hilit=lpressed#p103144

&&&

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Ejemplo BtnBmp "pressed"
Posted: Thu Apr 25, 2013 11:14 AM
Manuel,

Con solo cambiar la línea 461 en la Clase TBtnBmp:

Code (fw): Select all Collapse
METHOD Click() CLASS TBtnBmp

   if ::bWhen != NIL
      if ! Eval( ::bWhen )
         MsgBeep()
         return NIL
      endif
   endif

   if ! ::lProcessing // .and. ! ::lPressed // aqui !!!


tu ejemplo se simplifica y funciona bien asi :-)

manuel.prg
Code (fw): Select all Collapse
#include "FiveWin.ch"

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

function Main()

   local oDlg, oBtn

   DEFINE DIALOG oDlg RESOURCE "Main" //COLOR "N/B"

   REDEFINE BTNBMP oBtn ID 110 OF oDlg ;
      RESOURCE "Yes" NOBORDER ;
      ACTION ( oBtn:Toggle(), MsgBeep() )
      
   REDEFINE BTNBMP ID 120 OF oDlg ;
      RESOURCE "No"

   REDEFINE BTNBMP ID 130 OF oDlg ;
      RESOURCE "Cancel"

   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT oBtn:GoDown()

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Ejemplo BtnBmp "pressed"
Posted: Thu Apr 25, 2013 11:16 AM
Tambien puede quedar más simple aún:

Code (fw): Select all Collapse
#include "FiveWin.ch"

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

function Main()

   local oDlg, oBtn

   DEFINE DIALOG oDlg RESOURCE "Main" //COLOR "N/B"

   REDEFINE BTNBMP oBtn ID 110 OF oDlg ;
      RESOURCE "Yes" NOBORDER ;
      ACTION ( oBtn:Toggle(), MsgBeep() )
      
   oBtn:GoDown()   
      
   REDEFINE BTNBMP ID 120 OF oDlg ;
      RESOURCE "No"

   REDEFINE BTNBMP ID 130 OF oDlg ;
      RESOURCE "Cancel"

   ACTIVATE DIALOG oDlg CENTERED

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Ejemplo BtnBmp "pressed"
Posted: Thu Apr 25, 2013 05:08 PM
Tambien sería preciso cambiar este codigo , para que quede con color presionado cuando usamos gradientes . ( por lo menos en mi clase que tiene algun cambio )

Code (fw): Select all Collapse
METHOD aGrad() INLINE If( ::bClrGrad != nil, Eval( ::bClrGrad, ( ::lMOver .OR. ::lPressed ) ),;
                         If( ::oWnd:bClrGrad != nil, Eval( ::oWnd:bClrGrad, ::lMOver ) , ) )
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Ejemplo BtnBmp "pressed"
Posted: Thu Apr 25, 2013 06:25 PM

Manuel,

Incluido, gracias! :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion