Page 1 of 1

como cambiar caption de un boton...

Posted: Fri Jan 19, 2007 11:31 am
by Elias Torres
Hola a todos...

Estoy intentando cambiar desde codigo el caption de tres botones. Resulta que tengo en tres variables la descripcion que deben tener los botones y estoy intentando asignarselas al caption de cada uno de ellos de la siguiente forma:

redefine button id 500 label om1 of odlg15
redefine button id 501 label om2 of odlg15
redefine button id 502 label om3 of odlg15

Las variables om1,om2,om3 contiene la descripcion que debe tener cada boton... pero esto no me funciona me da el siguiente error:


Message not found
TBUTTON:DEFCONTROL
Args:
[ 1] = O Object

stack calls:
__ERRRT_SBASE(0)
TBUTTON:ERROR(179)
(b)HBOBJECT(105)
TBUTTON:MSGNOTFOUND(0)
TBUTTON:DEFCONTROL(169)
TGROUP:REDEFINE(0)
CONSULTAS(2455)
(b)LISTADO_CONSULTAS(2337)
TBITMAP:LBUTTONDOWN(0)
TWINDOW:HANDLEEVENT(0)
TCONTROL:HANDLEEVENT(0)
TBITMAP:HANDLEEVENT(0)
_FWPPC(0)
DIALOGBOX(0)
TDIALOG:ACTIVATE(0)
LISTADO_CONSULTAS(2340)
(b)MAIN(96)
TBITMAP:LBUTTONDOWN(0)
TWINDOW:HANDLEEVENT(0)
TCONTROL:HANDLEEVENT(0)
TBITMAP:HANDLEEVENT(0)
_FWPPC(0)
DIALOGBOX(0)
TDIALOG:ACTIVATE(0)
MAIN(102)



¿Que es lo que está mal?

Saludos y gracias-

Elías Torres

Posted: Fri Jan 19, 2007 12:18 pm
by Elias Torres
Ya está solucionado...

redefine button id 500 of odlg15 update PROMPT(om1)
redefine button id 501 of odlg15 update PROMPT(om2)
redefine button id 502 of odlg15 update PROMPT(om3)


saludos..

Elías Torres.

Posted: Fri Jan 19, 2007 12:33 pm
by Elias Torres
Tengo otra duda.... Una vez que he conseguido que el caption de los botones tenga un texto que lo coge de unas variables,quiero que ese texto en cada boton salga por ejemplo en negrita y con algun tipo de color. Necesito esto porque tengo que hacer que el boton cambie el caption de color cuando lo pulses para dar la impresion de que ese boton está activo... pero no se como hacerlo.

Si me podeis indicar....


Saludos y gracias..

Elías Torres.

Posted: Fri Jan 19, 2007 1:14 pm
by Antonio Linares
Elías,

Usa los botones TBtnBmp que permiten mostrar una imagen. A los botones estandard no se les puede cambiar el color.

Revisa samples\tutor12.prg

Posted: Fri Jan 19, 2007 4:23 pm
by Elias Torres
Antonio, lo he puesto como btnbmp, pero lo que pretendo no es ponerle una imagen sino cambiarle el caption cada vez que se pulse sobre el boton...

Con obtnbmp:seltext('algo') cambio el caption del boton..lo que no se como hacer es para que cada vez que pulse el boton me cambie el caption, por ejemplo:

si pulsas 1 vez: caption='hola'
si pulsas la segunda vez: caption='adios'
si se vuelves a pulsar: caption='hola' y asi sucesivamente....
...
...

Como puedo hacer eso?


Saludos

Elías Torres.

Posted: Fri Jan 19, 2007 9:18 pm
by Antonio Linares
Elías,

Te refieres a que el texto conmute entre dos valores ? De ser así puedes usar una variable lógica:

lVal := .f.

... BUTTON ... ACTION ( lVal := ! lVal, If( lVal, oBtn:SetText( "uno" ), oBtn:SetText( "dos" ) )

Posted: Mon Jan 22, 2007 9:50 am
by Elias Torres
Gracias Antonio, es lo que pretendia hacer. Lo que pasa es que nose como cambiarle el color. La siguiente instruccion funciona pero no me cambia el color del caption cada vez que pulso en el boton...

redefine button obtn id 500 of odlg15 action (lval:=!lval,iif(lval,(obtn:settext(om1), RGB(230,184,94)),(obtn:settext(om1),RGB(255,0,0))))


Saludos.

Elías Torres.

Posted: Mon Jan 22, 2007 10:57 am
by Antonio Linares
Elías,

oBtn:SetColor( 0, nRGB(230,184,94) )

pero, si no me equivoco, los botones estandard de Windows no te permitirán cambiarles su color de fondo, por eso tendrías que usar un TBtnBmp que no es estandard y tenemos control total sobre él