FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Cual clase para crear Botones? (SOLUCIONADO)
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Cual clase para crear Botones? (SOLUCIONADO)
Posted: Sun Dec 12, 2021 08: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

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
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Cual clase para crear Botones?
Posted: 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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Cual clase para crear Botones?
Posted: Mon Dec 13, 2021 01: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
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Re: Cual clase para crear Botones?
Posted: Mon Dec 13, 2021 11:54 AM
Hola Armando tanto tiempo... amigo yo lo hago asi:



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
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Cual clase para crear Botones?
Posted: Mon Dec 13, 2021 03: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
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Cual clase para crear Botones?
Posted: Mon Dec 13, 2021 04:12 PM
Puedes usar BTNBMP
Code (fw): Select all Collapse
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 (fw): Select all Collapse
// 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
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Cual clase para crear Botones?
Posted: Mon Dec 13, 2021 06:25 PM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Cual clase para crear Botones?
Posted: Mon Dec 13, 2021 06:45 PM
Very good:

Code (fw): Select all Collapse
// \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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Cual clase para crear Botones?
Posted: Mon Dec 13, 2021 07: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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Cual clase para crear Botones?
Posted: Thu Dec 16, 2021 07:50 PM
José y amigos:

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

Code (fw): Select all Collapse
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

Continue the discussion