Page 1 of 1

Bug on Btnbmp ???

Posted: Wed Nov 17, 2021 12:56 pm
by Silvio.Falconi
Image

because buttons 1 and 3 that have pngs (or bitmaps) don't behave like the number 5

I have seen that when a button is disabled if it has a png or a bitmap it does not behave
as when it does not have the bitmap (or png), i.e. when it is disabled it assumes a darker color than the button without bitmpas

this my test

Code: Select all | Expand

#include "Fivewin.ch"

Function test
local oDlg
local oBtn:=array(6),nI
local  oCursorBtn :=TCursor():New(,'HAND')

DEFINE DIALOG oDlg        ;
   TITLE "Test btnbmp enable/disable"     ;
   SIZE  400,400 PIXEL TRUEPIXEL              ;
   COLOR CLR_BLACK,  nRgb( 245,244,234) TRANSPARENT

 @ 10,10 BTNBMP obtn[1]   ;
                FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
                COLOR  CLR_BLACK,nRgb(238,236,219) ;
                PROMPT "Pieno.png" NOROUND;
                BITMAP "pieno.png" LEFT


@ 10,200 BTNBMP obtn[2]   ;
                FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
                COLOR  CLR_BLACK,nRgb(238,236,219) ;
                PROMPT "Pieno.png" NOROUND;
                BITMAP "pieno.png" LEFT



@ 120,10 BTNBMP obtn[3]   ;
                FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
                COLOR  CLR_BLACK,nRgb(238,236,219) ;
                PROMPT "vuoto.png" NOROUND;
                BITMAP "vuoto.png" LEFT

@ 120,200 BTNBMP obtn[4]   ;
                FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
                COLOR  CLR_BLACK,nRgb(238,236,219) ;
                PROMPT "VUOTO.png" NOROUND;
                BITMAP "vuoto.png" LEFT

@ 200,10 BTNBMP obtn[5]   ;
                FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
                COLOR  CLR_BLACK,nRgb(238,236,219) ;
                PROMPT "disable senza png" NOROUND;
                 LEFT

@ 200,200 BTNBMP obtn[6]   ;
                FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
                COLOR  CLR_BLACK,nRgb(238,236,219) ;
                PROMPT "enable senza png" NOROUND;
                 LEFT


                  for nI=1 to 6
obtn[nI]:bClrGrad = { | lInvert | If( ! lInvert,;
                    { { 1, RGB( 225, 225, 225 ), RGB( 225, 225, 225 ) } },;
                    { { 1, RGB( 229,241,251 ), RGB( 229,241,251 ) } } ) }
           obtn[nI]:nClrBorder := nRgb(218,214,179)
             obtn[nI]:oCursor:=   oCursorBtn
                  next

 ACTIVATE DIALOG oDlg center;
      ON INIT (obtn[1]:disable(),obtn[3]:disable(),obtn[5]:disable())
return nil



 



Pieno.png

Image


Vuoto.png

Image

Re: Bug on Btnbmp ???

Posted: Wed Nov 17, 2021 1:27 pm
by karinha
Intenta asi:


Code: Select all | Expand


      ON INIT ( oBtn[1]:Disable(), oBtn[1]:Refresh(), oBtn[3]:Disable(), ;
                oBtn[3]:Refresh(), oBtn[5]:Disable(), oBtn[5]:Refresh() )
 

Re: Bug on Btnbmp ???

Posted: Wed Nov 17, 2021 1:41 pm
by Silvio.Falconi
karinha wrote:Intenta asi:


Code: Select all | Expand


      ON INIT ( oBtn[1]:Disable(), oBtn[1]:Refresh(), oBtn[3]:Disable(), ;
                oBtn[3]:Refresh(), oBtn[5]:Disable(), oBtn[5]:Refresh() )
 


but you understood what i mean???????

Re: Bug on Btnbmp ???

Posted: Wed Nov 17, 2021 2:32 pm
by karinha
There really is a problem. Refresh() does not work with BTNBMP and PNG.

Realmente hay un problema. Refresh() no funciona con BTNBMP y PNG.

Code: Select all | Expand


// \SAMPLES\BTNBSILV.PRG

#include "Fivewin.ch"

FUNCTION Test()

   LOCAL oDlg
   LOCAL oBtn := Array( 6 ), nI
   LOCAL  oCursorBtn := TCursor():New(, 'HAND' )

   DEFINE DIALOG oDlg TITLE "Test btnbmp enable/disable Problem PNG"  ;
      SIZE  400, 400 PIXEL TRUEPIXEL                                  ;
      COLOR CLR_BLACK,  nRgb( 245, 244, 234 ) TRANSPARENT

   @ 10, 10 BTNBMP obtn[ 1 ]   ;
      FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
      COLOR  CLR_BLACK, nRgb( 238, 236, 219 ) ;
      PROMPT "Pieno.png" NOROUND;
      BITMAP "pieno.png" LEFT            ;
      ACTION MsgInfo( "1" )

   @ 10, 200 BTNBMP obtn[ 2 ]   ;
      FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
      COLOR  CLR_BLACK, nRgb( 238, 236, 219 ) ;
      PROMPT "Pieno.png" NOROUND;
      BITMAP "pieno.png" LEFT            ;
      ACTION MsgInfo( "2" )

   @ 120, 10 BTNBMP obtn[ 3 ]   ;
      FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
      COLOR  CLR_BLACK, nRgb( 238, 236, 219 ) ;
      PROMPT "vuoto.png" NOROUND;
      BITMAP "vuoto.png" LEFT            ;
      ACTION MsgInfo( "3" )

   @ 120, 200 BTNBMP obtn[ 4 ]   ;
      FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
      COLOR  CLR_BLACK, nRgb( 238, 236, 219 ) ;
      PROMPT "VUOTO.png" NOROUND;
      BITMAP "vuoto.png" LEFT            ;
      ACTION MsgInfo( "4" )

   @ 200, 10 BTNBMP obtn[ 5 ]   ;
      FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
      COLOR  CLR_BLACK, nRgb( 238, 236, 219 ) ;
      PROMPT "disable senza png" NOROUND;
      LEFT            ;
      ACTION( oBtn[ 1 ]:Disable(), oBtn[ 1 ]:Refresh(), oBtn[ 3 ]:Disable(), ;
      oBtn[ 3 ]:Refresh(), oBtn[ 5 ]:Disable(), oBtn[ 5 ]:Refresh(),         ;
      oDlg:UpDate(), oDlg:Refresh() )

   @ 200, 200 BTNBMP obtn[ 6 ]   ;
      FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
      COLOR  CLR_BLACK, nRgb( 238, 236, 219 ) ;
      PROMPT "enable senza png" NOROUND;
      LEFT             ;
      ACTION( oBtn[ 1 ]:Enable(),  oBtn[ 1 ]:Refresh(), oBtn[ 3 ]:Enable(), ;
      oBtn[ 3 ]:Refresh(), oBtn[ 5 ]:Enable(),  oBtn[ 5 ]:Refresh() )

   FOR nI = 1 TO 6
      obtn[ nI ]:bClrGrad = {| lInvert | If( ! lInvert, ;
         { { 1, RGB( 225, 225, 225 ), RGB( 225, 225, 225 ) } }, ;
         { { 1, RGB( 229, 241, 251 ), RGB( 229, 241, 251 ) } } ) }
      obtn[ nI ]:nClrBorder := nRgb( 218, 214, 179 )
      obtn[ nI ]:oCursor :=   oCursorBtn
   NEXT

   /*
   oBtn[ 1 ]:Disable()
   oBtn[ 3 ]:Disable()
   oBtn[ 5 ]:Disable()
   */


   // OR:

   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT ( oBtn[ 1 ]:Disable(), oBtn[ 1 ]:Refresh(), oBtn[ 3 ]:Disable(), ;
                oBtn[ 3 ]:Refresh(), oBtn[ 5 ]:Disable(), oBtn[ 5 ]:Refresh() )

RETURN NIL
 

Re: Bug on Btnbmp ???

Posted: Wed Nov 17, 2021 3:56 pm
by karinha
Esto hace que sea más fácil ver el problema con PNG, con BMP funciona normalmente. Prefiero BUTTONBMP, es mucho mejor.

This makes it easier to see the problem with PNG, with BMP it works as normal. I prefer BUTTONBMP, it's much better.

Code: Select all | Expand


// \SAMPLES\BTNBSILV.PRG

#include "Fivewin.ch"

STATIC oBtn

FUNCTION Test()

   LOCAL oDlg, nI
   // LOCAL oBtn := Array( 6 ), nI
   LOCAL  oCursorBtn := TCursor():New(, 'HAND' )

   oBtn := Array( 6 )

   SET _3DLOOK ON

   SkinButtons()

   DEFINE DIALOG oDlg TITLE "Test btnbmp enable/disable"  ;
      SIZE  400, 400 PIXEL TRUEPIXEL                      ;
      COLORS CLR_BLACK, CLR_WHITE TRANSPARENT

   oDlg:lHelPIcon := .F.

   @ 10, 10 BTNBMP obtn[ 1 ]   ;
      FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
      COLOR  CLR_BLACK, nRgb( 238, 236, 219 ) ;
      PROMPT "Pieno.png" NOROUND;
      BITMAP "pieno.png" LEFT            ;
      ACTION MsgInfo( "1" )

   oDlg:aControls[ 1 ]:lTransparent = .T.
   oBtn[ 1 ]:lTransparent = .T.

   @ 10, 200 BTNBMP obtn[ 2 ]   ;
      FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
      COLOR  CLR_BLACK, nRgb( 238, 236, 219 ) ;
      PROMPT "Pieno.png" NOROUND;
      BITMAP "pieno.png" LEFT            ;
      ACTION MsgInfo( "2" )

   oDlg:aControls[ 2 ]:lTransparent = .T.
   oBtn[ 2 ]:lTransparent = .T.

   @ 120, 10 BTNBMP obtn[ 3 ]   ;
      FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
      COLOR  CLR_BLACK, nRgb( 238, 236, 219 ) ;
      PROMPT "vuoto.png" NOROUND;
      BITMAP "vuoto.png" LEFT            ;
      ACTION MsgInfo( "3" )

   oDlg:aControls[ 3 ]:lTransparent = .T.
   oBtn[ 3 ]:lTransparent = .T.

   @ 120, 200 BTNBMP obtn[ 4 ]   ;
      FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
      COLOR  CLR_BLACK, nRgb( 238, 236, 219 ) ;
      PROMPT "VUOTO.png" NOROUND         ;
      BITMAP "vuoto.png" LEFT            ;
      ACTION MsgInfo( "4" )

   oDlg:aControls[ 4 ]:lTransparent = .T.
   oBtn[ 4 ]:lTransparent = .T.

   // Fuincio bien com .BMP
   @ 200, 10 BTNBMP obtn[ 5 ]   ;
      FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
      FILENAME "..\bitmaps\16x16\prop.bmp"    ;
      COLOR  CLR_BLACK, nRgb( 238, 236, 219 ) ;
      PROMPT "disable senza png" NOROUND      ;
      LEFT            ;
      ACTION( oBtn[ 1 ]:Disable(), oBtn[ 1 ]:Refresh(), oBtn[ 3 ]:Disable(), ;
      oBtn[ 3 ]:Refresh(), oBtn[ 5 ]:Disable(), oBtn[ 5 ]:Refresh(),         ;
      oDlg:UpDate(), oDlg:Refresh() )

   oDlg:aControls[ 5 ]:lTransparent = .T.
   oBtn[ 5 ]:lTransparent = .T.

   @ 200, 200 BTNBMP obtn[ 6 ]   ;
      FLAT  SIZE 120, 30  OF oDlg   PIXEL ;
      FILENAME "..\bitmaps\16x16\floppy.bmp"  ;
      COLOR  CLR_BLACK, nRgb( 238, 236, 219 ) ;
      PROMPT "enable senza png" NOROUND;
      LEFT             ;
      ACTION( oBtn[ 1 ]:Enable(),  oBtn[ 1 ]:Refresh(), oBtn[ 3 ]:Enable(), ;
              oBtn[ 3 ]:Refresh(), oBtn[ 5 ]:Enable(),  oBtn[ 5 ]:Refresh() )

   oDlg:aControls[ 6 ]:lTransparent = .T.
   oBtn[ 6 ]:lTransparent = .T.

   FOR nI = 1 TO 6
      obtn[ nI ]:bClrGrad = {| lInvert | If( ! lInvert, ;
         { { 1, RGB( 225, 225, 225 ), RGB( 225, 225, 225 ) } }, ;
         { { 1, RGB( 229, 241, 251 ), RGB( 229, 241, 251 ) } } ) }
      obtn[ nI ]:nClrBorder := nRgb( 218, 214, 179 )
      obtn[ nI ]:oCursor :=   oCursorBtn
   NEXT

   /*
   oBtn[ 1 ]:Disable()
   oBtn[ 3 ]:Disable()
   oBtn[ 5 ]:Disable()
   */


   // OR:

   ACTIVATE DIALOG oDlg CENTERED  ;
      ON INIT( DesLiga_BtnBmp( oBtn ) )

      /*
      ON INIT ( oBtn[ 1 ]:Disable(), oBtn[ 1 ]:Refresh(), oBtn[ 3 ]:Disable(), ;
                oBtn[ 3 ]:Refresh(), oBtn[ 5 ]:Disable(), oBtn[ 5 ]:Refresh() )
      */


RETURN NIL

FUNCTION DesLiga_BtnBmp( oBtn )

   oBtn[ 1 ]:Disable()
   oBtn[ 1 ]:Refresh()

   oBtn[ 3 ]:Disable()
   oBtn[ 3 ]:Refresh()

   oBtn[ 5 ]:Disable()
   oBtn[ 5 ]:Refresh()

RETURN( .T. )

// FIN / END
 

Re: Bug on Btnbmp ???

Posted: Thu Nov 18, 2021 10:10 am
by Silvio.Falconi
I saw only if I insert
oDlg:aControls[ 1 ]:lTransparent = .T.

then I see the button
If I not insert it the btnbmp show bad