para Antonio : Sobre BTNBMP... oBtn:bPainted (RESUELTO)

para Antonio : Sobre BTNBMP... oBtn:bPainted (RESUELTO)

Postby albeiroval » Wed Jun 04, 2014 4:26 pm

Buenos dias,

No se si se pueda hacer lo siguiente :

Tengo la necesidad de identificar unos botones para el usuario, como muestro en la imagen,
exactamente es el texto que esta encerrado en color rojo, usando el comando REDEFINE BTNBMP ....,

[img]
http://www.4shared.com/photo/tfYyv9Xmba/Botones.html?
[/img]

Gracias,

Saludos Cordiales,

Albeiro.
Last edited by albeiroval on Mon Jul 28, 2014 4:49 am, edited 3 times in total.
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 363
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Sobre BTNBMP...

Postby albeiroval » Wed Jun 04, 2014 4:38 pm

disculpas, esta es la imagen :

[img]
http://www.4shared.com/photo/03Hn6hp2ce ... s__1_.html?
[/img]
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 363
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Sobre BTNBMP...

Postby Antonio Linares » Wed Jun 04, 2014 11:30 pm

Albeiro,

Haciendo una pequeña modificación en la Clase TBtnBmp Method Paint() puedes usar oBtn:bPainted y desde ahí escribir ó dibujar en el control lo que desees:

Code: Select all  Expand view
...
   
   if ::bPainted != nil   // nuevo
      Eval( ::bPainted, ::hDC, ::cPS, Self )  // nuevo
   endif  // nuevo  

   if ! IsWindowEnabled( ::hWnd ) .and. Empty( ::hBitmap3 )
      BtnDisable( ::hWnd, ::hDC )
   endif

   ...
 


Lo incluimos para la próxima versión de FWH :-)
regards, saludos

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

Re: Sobre BTNBMP...

Postby albeiroval » Thu Jun 05, 2014 2:16 am

Antonio,

Gracias :)
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 363
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Sobre BTNBMP...

Postby albeiroval » Sat Jul 26, 2014 2:28 am

Antonio ,

Modifique la clase y probe con este ejemplo pero no funciona.

Code: Select all  Expand view

function PruebaBtnBmp()
   LOCAL oDlg, oFont, oBtn, aPos
     
   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12 BOLD  
   
   DEFINE WINDOW oDlg TITLE "Say en Boton"

   @ 3, 16 BTNBMP oBtn OF oDlg;  
     PROMPT "&Cancel";
     CENTER;
     SIZE 60, 60;
     ACTION oDlg:End()
             
             
    // oBtn:bInit = {|| TSay():New(6, 14, {|| " 1 "}, oBtn,, oFont, .F., .F., .F., .F., CLR_BLACK, CLR_WHITE,,, .F., .F., .F., .F., .F., .F., .F., )}
   
    oBtn:bPainted = {|| TSay():New( 6, 14, {|| " 1 "}, oBtn,, oFont, .F., .F., .F., .F., CLR_BLACK, CLR_WHITE,,, .F., .F., .F., .F., .F., .F., .F., )}
   
   ACTIVATE WINDOW oDlg  
   
   RELEASE FONT oFont
     
Return nil
 
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 363
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: para Antonio : Sobre BTNBMP... oBtn:bPainted

Postby Antonio Linares » Sun Jul 27, 2014 9:42 am

Alveiro,

No, asi no hace, puesto que así estarias creando un nuevo control TSay cada vez que se pintase el botón, y eso consumiría muchos recursos y al final incluso podria tirar la aplicación.

La forma de escribir texto es usando la función DrawText() ó tambien serviría la función ExtTextOut():

oBtn:bPainted = { | hDC | DrawText( hDC, "Hola", { 0, 0, oBtnBmp:nWidth, oBtnBmp:nHeight }, nStyle )

Ese array de cuatro elementos es el rectángulo en donde se escibirá el texto dentro de la superficie del botón. nStyle es el estilo a usar de estos:

#define DT_TOP 0
#define DT_LEFT 0
#define DT_CENTER 1
#define DT_RIGHT 2
#define DT_VCENTER 4
#define DT_BOTTOM 8
#define DT_WORDBREAK 16
#define DT_SINGLELINE 32
#define DT_CALCRECT 1024

Para una explicación de estos estilos puedes revisar:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd162498(v=vs.85).aspx

Si deseas cambiar el color del texto a pintar, debes usar la función SetTextColor( hDC, CLR_BLUE ) (los colores estan en colors.ch, ó cualquier combinación RGB usando la función nRgb( nRed, nGreen, nBlue ) y llamarias a esta función desde el codeblock antes de llamar a DrawText()

Tambien puedes cambiar el font a usar, etc.
regards, saludos

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

Re: para Antonio : Sobre BTNBMP... oBtn:bPainted

Postby albeiroval » Mon Jul 28, 2014 4:48 am

Antonio ahora si funciono.

Gracias.
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 363
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: para Antonio : Sobre BTNBMP... oBtn:bPainted (RESUELTO)

Postby Antonio Linares » Mon Jul 28, 2014 5:29 pm

Muy bien :-)
regards, saludos

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

Re: para Antonio : Sobre BTNBMP... oBtn:bPainted (RESUELTO)

Postby albeiroval » Fri Jan 16, 2015 1:48 pm

Antonio,

Buen dia, recuerda agregar este codigo a btnbmp.prg para el proximo build de fwh.

Saludos.
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 363
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: para Antonio : Sobre BTNBMP... oBtn:bPainted (RESUELTO)

Postby horacio » Fri Jan 16, 2015 10:33 pm

No encuentro esta parte del código que se supone se encuentra en el método Paint()

...

if ! IsWindowEnabled( ::hWnd ) .and. Empty( ::hBitmap3 )
BtnDisable( ::hWnd, ::hDC )
endif

...


Donde pongo el código nuevo ? Alguien sabe ?. Muchísimas gracias

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 80 guests