Desplegar, Seleccionar y Cambiar color de formularios en tiempo de ejecución

269 views
Skip to first unread message

Wilzy G

unread,
Jul 8, 2020, 10:47:22 AM7/8/20
to Comunidad de Visual Foxpro en Español

Buenas, solicito ayuda.


Actualmente tengo ésta pantalla en la cual se puede cambiar el color de los formularios en tiempo de ejecución, para lo cual se debe ingresar los parámetros RGB manualmente, (cosa que no es muy práctico ya que hay que buscar en internet u otro lado los numeros RGB que corresponde al color que se desea para poder ingresarlo).


El BackColor toma el código RGB y cambia el color de los formularios.


Parametros RGB.jpg




Cómo puedo lograr que haciendo clic en un botón se desplieguen los colores, y al seleccionar alguno de los colores los formularios tomen ese color??.


Elegir Colores.jpg


Por ejemplo, al elegir el color amarillo obtener automáticamente su codigo RGB par el BackColor, en vez de tener que escribir 255,255,0


Agradezco cualquier ayuda de antemano.


Muchísimas Gracias.


Zarlu

unread,
Jul 8, 2020, 11:10:51 AM7/8/20
to Comunidad de Visual Foxpro en Español
Buenos días Wilzy G

Prueba
lcColor=GETCOLOR()
? lcColor

Te hará falta convertir a RGB

Suerte
zarlu
Chetumal, Quintana Roo, México

Harold Inga

unread,
Jul 8, 2020, 11:22:04 AM7/8/20
to publice...@googlegroups.com
Este código encontre en el foro, aun no lo he probado.

loColor = ColorToRGB(GetColor())
lnGris = (loColor.Red + loColor.Green + loColor.Blue) / 3
_Screen.BackColor = RGB(lnGris, lnGris, lnGris)

Function ColorToRGB
Parameters tnColor
Local loResult
    loResult = NewObject("empty")
    AddProperty(loResult, "Red", Int(Bitand(tnColor, 255)))
    AddProperty(loResult, "Green", Int(Bitand(tnColor, 16842496)/0256))
    AddProperty(loResult, "Blue", Int(Bitand(tnColor, 16711680)/65536))
Return (loResult)
EndFunc


Harold Gerardo Inga Bruz
Analista/Programador de Sistemas
Especialista en Reingenieria de Procesos, Recaudacion Tributaria y Catastro
RPM #953522915, RPC 953721757, Fijo (053)636233


--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/9f238e7e-91fd-47a4-8fa9-8356694efb0co%40googlegroups.com.

Zarlu

unread,
Jul 8, 2020, 11:36:46 AM7/8/20
to Comunidad de Visual Foxpro en Español
Qué tal Wilzy G.

Aquí lo tienes (de la red)

De está manera obtienes el RGB para almacenar en los text actuales y no tienes que mover demasiado tu código

LOCAL r, g, b
red = 0
green = 0
blue = 0
getRGB(getColor(),@red,@green,@blue)
? red
? green
? blue
FUNC getRGB(colour,red,green,blue)
PRIVATE p,i
p = (256 ^ 2)
i = INT(colour / p)
blue = i
colour = colour - (i * p)
p = (256 ^ 1)
i = INT(colour / p)
green =    i
colour = colour - (i * p)
red = INT(colour)

Francisco Lorente

unread,
Jul 8, 2020, 11:57:47 AM7/8/20
to Comunidad de Visual Foxpro en Español
Hola Wilzy

Prueba con esto:

m.lnColor = GetColor()
If m.lnColor != -1
   
Thisform.Backcolor = m.lnColor
EndIf

No hay qiue convertir lnColor a RGB

Saludos.
Francisco Lorente.
Murcia. España.

Wilzy G

unread,
Jul 8, 2020, 12:24:00 PM7/8/20
to Comunidad de Visual Foxpro en Español

Muchísimas Gracias a todos, ya pude implementar :)


Wilzy G

unread,
Jul 8, 2020, 12:24:54 PM7/8/20
to Comunidad de Visual Foxpro en Español

Gracias :)

Zarlu

unread,
Jul 8, 2020, 12:36:58 PM7/8/20
to Comunidad de Visual Foxpro en Español
Excelente Wilzy G Que ya lo resolviste

El código sugerido por Harold Inga funciona así:
loColor = ColorToRGB(GetColor())
_Screen.BackColor = RGB(loColor.Red, loColor.Green, loColor.Blue)


Function ColorToRGB
Parameters tnColor
Local loResult
    loResult = NewObject("empty")
    AddProperty(loResult, "Red", Int(Bitand(tnColor, 255)))
    AddProperty(loResult, "Green", Int(Bitand(tnColor, 16842496)/0256))
    AddProperty(loResult, "Blue", Int(Bitand(tnColor, 16711680)/65536))
Return (loResult)
EndFunc

Hago la acotación de que esto es si se quiere obtener los valores de Red,Green y Blue

Wilzy G

unread,
Jul 8, 2020, 1:07:44 PM7/8/20
to Comunidad de Visual Foxpro en Español


Excelente los aportes

ZeRoberto

unread,
Jul 8, 2020, 1:15:00 PM7/8/20
to publicesvfoxpro
Te recomiendo que no guardes los colores por separado

Saludos

Ze




El mié., 8 de jul. de 2020 a la(s) 12:07, Wilzy G (wilz...@gmail.com) escribió:


Excelente los aportes

--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

Wilzy G

unread,
Jul 8, 2020, 5:13:25 PM7/8/20
to Comunidad de Visual Foxpro en Español
Por qué?


El miércoles, 8 de julio de 2020, 13:15:00 (UTC-4), ZeRoberto escribió:
Te recomiendo que no guardes los colores por separado

Saludos

Ze




El mié., 8 de jul. de 2020 a la(s) 12:07, Wilzy G (wilz...@gmail.com) escribió:


Excelente los aportes

--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publice...@googlegroups.com.

HernanCano

unread,
Jul 9, 2020, 4:19:43 AM7/9/20
to Comunidad de Visual Foxpro en Español
¿Por qué?

ZeRoberto

unread,
Jul 9, 2020, 9:10:43 AM7/9/20
to publicesvfoxpro
Para hacerlo mas facil para el usuario, mucho de nosotros pocas veces ingresamos valores RGB abrimos la paleta de colores y seleccionamos el color.

colores.jpg

Es una humilde sugerencia

Saludos

Ze




--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

Wilzy G

unread,
Jul 9, 2020, 11:23:29 AM7/9/20
to Comunidad de Visual Foxpro en Español
 
Sí, ahora ya cambié para que se pueda seleccionar desde una paleta.

Zarlu

unread,
Oct 17, 2023, 6:54:55 PM10/17/23
to Comunidad de Visual Foxpro en Español
Buenas tardes foxeros!

A solicitud de un colega que tuvo problemas con el botón cancelar de la paleta de colores.
Un código simplificado de los aportes hechos en éste hilo

lcObjeto="_Screen.BackColor"&&objeto a cambiar el color
loColor = GetColor(&lcObjeto)&&abre paleta con color actual seleccionado
IF loColor!=-1&&si se elige algun color
&lcObjeto = loColor
EndIf

Suerte
zarlu
Chetumal, Quintana Roo, México

Hitiel Hernández

unread,
Oct 19, 2023, 11:21:48 AM10/19/23
to publice...@googlegroups.com
Gracias Zarlu

funcionó perfecto como tú lo indicas. 

Probé hacerlo con esta función pero siempre me marca error al presionar en CANCELAR

*---------------------------------------------------------------------
**** FUNCIÓN PARA OBTENER LOS COLORES RGB

Function ColorToRGB
Parameters tnColor
Local loResult
    loResult = NewObject("empty")
    AddProperty(loResult, "Red", Int(Bitand(tnColor, 255)))
    AddProperty(loResult, "Green", Int(Bitand(tnColor, 16842496)/0256))
    AddProperty(loResult, "Blue", Int(Bitand(tnColor, 16711680)/65536))
Return (loResult)
EndFunc
*----------------------------------------------------------------------

y en el evento CLICK de un botón tenía este código:
*----------------------------------------------------------------------------
loColor = ColorToRGB(GetColor())
_Screen.BackColor = RGB(loColor.Red, loColor.Green, loColor.Blue)
*------------------------------------------------------------------------------------------------

Me podrías ayudar indicándome dónde está el problema con el ERROR porque no lo pude solucionar.
Marca error al presionar en CANCELAR en la paleta de colores.

Gracias





--
Blog de la Comunidad Visual FoxPro en Español http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.


--
Saludos Cordiales!

Reply all
Reply to author
Forward
0 new messages