Cual clase para crear Botones? (SOLUCIONADO)

Post Reply
User avatar
Armando
Posts: 3272
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 2 times
Contact:

Cual clase para crear Botones? (SOLUCIONADO)

Post by Armando »

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
karinha
Posts: 7948
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Cual clase para crear Botones?

Post by karinha »

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
Armando
Posts: 3272
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 2 times
Contact:

Re: Cual clase para crear Botones?

Post by Armando »

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
jbrita
Posts: 507
Joined: Mon Jan 16, 2006 3:42 pm

Re: Cual clase para crear Botones?

Post by jbrita »

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
User avatar
Armando
Posts: 3272
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 2 times
Contact:

Re: Cual clase para crear Botones?

Post by Armando »

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
cmsoft
Posts: 1297
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina
Been thanked: 2 times

Re: Cual clase para crear Botones?

Post by cmsoft »

Puedes usar BTNBMP

Code: Select all | Expand


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


// 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
karinha
Posts: 7948
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Cual clase para crear Botones?

Post by karinha »

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

Re: Cual clase para crear Botones?

Post by karinha »

Very good:

Code: Select all | Expand


// \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
Armando
Posts: 3272
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 2 times
Contact:

Re: Cual clase para crear Botones?

Post by Armando »

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: 3272
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 2 times
Contact:

Re: Cual clase para crear Botones?

Post by Armando »

José y amigos:

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

Code: Select all | Expand


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
Post Reply