Cual clase para crear Botones? (SOLUCIONADO)

Cual clase para crear Botones? (SOLUCIONADO)

Postby Armando » Sun Dec 12, 2021 8:15 pm

Saludos jóvenes del foro:

Necesito crear un grupo de botones dentro de un diálogo (No buttonbar) que me permitan:

1.- Crearlos desde recursos, son como 50 botones
2.- Pre definirle un color al crear el diálogo
3.- Cambiar el color del botón en tiempo de ejecución, con una ACTION
4.- Poner texto centrado, horizontal y vertical en más de una línea
5.- Especificar el tamaño del FONT

Con cual clase para botones puedo obtener esos beneficios???
Algún pequeño ejemplo?.

Busque en el foro pero no di

Un abrazo
Last edited by Armando on Fri Dec 17, 2021 5:20 pm, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3230
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Cual clase para crear Botones?

Postby karinha » Sun Dec 12, 2021 10:02 pm

Creo que con BTNBMP.

\SAMPLES:

TESTBTB.PRG
TESTBTNL.PRG
TESTEBT4.PRG
TESTBTN3.PRG

y otros que no me recuerdo ahora.

Slaudos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cual clase para crear Botones?

Postby Armando » Mon Dec 13, 2021 1:19 am

Karinha:

Agradezco la respuesta, he revisado todos los ejemplos con botones y ninguno
cumple con mis necesidades

Alguna otra opción?
Alguien con un ejemplo?

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3230
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Cual clase para crear Botones?

Postby jbrita » Mon Dec 13, 2021 11:54 am

Hola Armando tanto tiempo... amigo yo lo hago asi:
Image


REDEFINE BTNBMP oBtns[nSit] ID bId OF oDlg RESOURCE "asiento_ocu" NOBORDER RIGHT UPDATE
oBtns[nSit]:cCaption := AllTrim(Str( nSit ))
oBtns[nSit]:cargo := nSit
oBtns[nSit]:bAction := {|oBtn| ReImpBoleto(CodControl,oBtn) } //NIL }


saludos
jbrita
 
Posts: 502
Joined: Mon Jan 16, 2006 3:42 pm


Re: Cual clase para crear Botones?

Postby Armando » Mon Dec 13, 2021 3:48 pm

Karinha;

También revise los link que me enviaste pero son con código @ x,y
los necesito desde recursos y no vi cómo cambiar el color.

José:

Saludos al crio, me parece que lo voy a solucionar con imagenes
como lo haces tú.

Un abrazo
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3230
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Cual clase para crear Botones?

Postby cmsoft » Mon Dec 13, 2021 4:12 pm

Puedes usar BTNBMP
Code: Select all  Expand view  RUN

DEFINE DIALOG oDlg1 RESOURCE "POS"  TITLE "Facturacion punto de venta"
   oDlg1:lHelpIcon := .f.
   
   //FACTURAR ARTICULOS VARIOS COMO DEPTO
   REDEFINE BTNBMP oBot[02] ID 102 OF oDlg1 2007 CENTER  FONT oFont1;
            ACTION(Miaction()) // Boton comun

   REDEFINE BTNBMP oBot[03] ID 4003 OF oDlg1 2007 CENTER  FONT oFont1;
            ACTION(MiAction(1))  GRADIENT { ||  {{ 1, RGB( 120,136,85 ), nRgb(255,255,255) }} }      // Boton con gradiente de color

   REDEFINE BTNBMP oBot[34] ID 305 OF oDlg1 2007 CENTER; //SALIR
                   PROMPT "&Salir";
                   FILE "BITMAPS\SALIR.BMP"  ;
                   ACTION(oDlg1:End()) // Boton con imagen
   REDEFINE BTNBMP oBot[59] ID 312 OF oDlg1 2007 CENTER;  //Boton con 2 lineas de texto
                   PROMPT "&Nota"+CHR(10)+"credito" ;
                   ACTION (NotaC())

 

Tambien puedes cambiar el texto del boton y el color con las datas estas
Code: Select all  Expand view  RUN

// Texto del boton
oBot:cCaption := IF(lFactura,"Factura","Nota"+CRH(10)+"Credito")
//Color
oBot:nClrBack :=  RGB( 120,136,85 )
// Gradiente
oBot:bClrGrad := { ||  {{ 1, RGB( 120,136,85 ), nRgb(255,255,255) }} } // En caso de querer gradiente
// O tambien
oBot:SetColor( nClrText, nClrPane )
 


Espero te sirva
User avatar
cmsoft
 
Posts: 1292
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Cual clase para crear Botones?

Postby karinha » Mon Dec 13, 2021 6:25 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cual clase para crear Botones?

Postby karinha » Mon Dec 13, 2021 6:45 pm

Very good:

Code: Select all  Expand view  RUN

// \SAMPLES\MANUEL.PRG / MANUEL.RC

#Include "FiveWin.ch"

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

FUNCTION Main()

   LOCAL oDlg, nButton, oFont, oBtn := Array( 5 ), cTitle, aGrad

   SkinButtons()

   cTitle  := "Armando: BOTONES DE COLORES"

   aGrad := { { 0.30, CLR_CYAN, CLR_HCYAN },{ 0.70, CLR_HCYAN, CLR_CYAN } }

   DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 0, - 14 BOLD

   DEFINE DIALOG oDlg RESOURCE "Main" TITLE cTitle GRADIENT aGrad

   oDlg:lHelpIcon := .F.

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

   REDEFINE BTNBMP oBtn[3] ID 130 OF oDlg ;
      RESOURCE "Cancel"           ;
      ACTION( oDlg:End() )

   oBtn[3]:lCancel := .T.

   FOR nButton = 1 TO 3 // FONT .and. COLORS.

      SET FONT OF oBtn[ nButton ] TO oFont

      SET_Color_oBot( oBtn[ nButton ], "AZUL" )

   NEXT

   ACTIVATE DIALOG oDlg CENTERED

RETURN NIL

FUNCTION SET_Color_oBot( oBot, cColor )

   DEFAULT cColor := NIL

   IF .NOT. cColor = NIL

      IF cColor = "ORO"

         oBot:bClrGrad = {| lMouseOver | If( ! lMouseOver, ;
            { { 1.00, 14481663, 38075 }, ;
            { 1.00, 38075, 14481663 } }, ;
            { { 0.10, 16777215, 9363707 }, ;
            { 0.10, 9363707, 16777215 } } ) }

         oBot:SetColor( 0 )

      ELSEIF cColor = "PLATA"

         oBot:bClrGrad = {| lMouseOver | If( ! lMouseOver, ;
            { { 0.30, 12961221, 16777215 }, ;
            { 0.30, 16777215, 12961221 } }, ;
            { { 0.10, 9363707, 16777215 }, ;
            { 0.10, 16777215, 9363707 } } ) }

         oBot:SetColor( 0 )

      ELSEIF cColor = "AZUL"

         oBot:bClrGrad := {| lInvert | If( ! lInvert, { { 0.50, 16776960, 16777215 }, ;
            { 0.50, 16777215, 16776960 } }, ;
            { { 0.50, 128, 16777215 }, ;
            { 0.50, 16777215, 128 } } ) }

         oBot:SetColor( 0 )

      ELSEIF cColor = "APUB"

         oBot:bClrGrad := {| lInvert | If( lInvert, ;
            { { 1 / 3, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
            { 2 / 3, nRGB( 255, 215,  84 ), nRGB( 255, 233, 162 ) }  ;
             }, ;
            { { 1 / 2, nRGB( 219, 230, 244 ), nRGB( 207 - 50, 221 - 25, 255 ) }, ;
            { 1 / 2, nRGB( 201 - 50, 217 - 25, 255 ), nRGB( 231, 242, 255 ) }  ;
            } ) }

         oBot:SetColor( 0 )

      ENDIF

   ENDIF

RETURN NIL

// fin / end

/* // MANUEL.RC
#include "..\include\WinApi.ch"

Yes BITMAP "../bitmaps/yes.bmp"
No BITMAP "../bitmaps/no.bmp"
Cancel BITMAP "../bitmaps/cancel.bmp"

main DIALOG 50, 67, 162, 76
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "FiveWin Class TBtnBmp"
FONT 12, "MS Sans Serif"
{
 CONTROL "", 110, "TBtnBmp", 0 | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 9, 46, 43, 16
 CONTROL "", 120, "TBtnBmp", 0 | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 60, 46, 43, 16
 CONTROL "", 130, "TBtnBmp", 0 | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 110, 46, 42, 16
}
*/

 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cual clase para crear Botones?

Postby Armando » Mon Dec 13, 2021 7:42 pm

Amigos:

José, Karinha y César:

Gracias a su apoyo estoy avanzando.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3230
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Cual clase para crear Botones?

Postby Armando » Thu Dec 16, 2021 7:50 pm

José y amigos:

En tú código veo las siguientes líneas

Code: Select all  Expand view  RUN

oBtns[nSit]:cargo := nSit
oBtns[nSit]:bAction := {|oBtn| ReImpBoleto(CodControl,oBtn) } //NIL }
 


Posterior a la definición del BTNGET, en otra función
cómo puedo hacer referencia al cargo que se hizo al boton?

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3230
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 42 guests