Spanish Asignar un color al Colortemplate

Espinosa4

Active Member
Licensed User
Longtime User
Buenas tardes,

Estoy usando el colortemplate y leer el color siguiendo el ejemplo es fácil pero me gustaría poder pasarle un color que tengo almacenado en una tabla (int) pero no consigo saber como usarlo.

El código básico es el siguiente:

B4X:
    Wait For (Dialog.ShowTemplate(ColorTemplate, "ACEPTAR", "", "CANCELAR")) Complete (Result As Int)
    If Result = xui.DialogResponse_Positive Then
        Panel.Color = ColorTemplate.SelectedColor
        Cambios = True
    End If


Según un post que he podido leer Erel sugiere el siguiente código:

B4X:
Sub Process_Globals
   Private PreviouslySelectedColor() As Object
   Private xui As XUI
End Sub

Sub Globals
   Dim dialog As B4XDialog
   Dim ColorTemplate As B4XColorTemplate
End Sub

Sub Activity_Create(FirstTime As Boolean)
   dialog.Initialize(Activity)
   ColorTemplate.Initialize
   If PreviouslySelectedColor.Length > 0 Then
       ColorTemplate.SelectedHSVColor = PreviouslySelectedColor
   End If
End Sub

Sub Activity_Click
   Wait For (dialog.ShowTemplate(ColorTemplate, "OK", "", "CANCEL")) Complete (Result As Int)
   If Result = xui.DialogResponse_Positive Then
       Activity.Color = ColorTemplate.SelectedColor
       PreviouslySelectedColor = ColorTemplate.SelectedHSVColor
   End If
End Sub


Me podríais echar un cable, ¿por favor?
Es que no consigo pasar el Int que tengo almacenado para que salga ese color cuando aparezca el cuadro de los colores.

Gracias por adelantado
Espinosa
 

josejad

Expert
Licensed User
Longtime User
Hola:

¿Puedes subir un pequeño ejemplo para hacer pruebas?
 

josejad

Expert
Licensed User
Longtime User
Es que no consigo pasar el Int que tengo almacenado para que salga ese color cuando aparezca el cuadro de los colores.
Es que no entiendo muy bien tu pregunta (de ahí lo de pedirte un ejemplo).
Lo que quieres es que, cuando abres el dialog para mostrar los colores (dialog.ShowTemplate), esté por defecto uno que tú predefinas seleccionado?
Es decir, que si le pasas un tono de verde, aparezca el dialog con el verde (en vez de amarillo) y el punto puesto sobre el tono que le pasas?

1731482433460.png
 

Espinosa4

Active Member
Licensed User
Longtime User
Correcto!

yo tengo colores almacenados en una tabla como Int y lo que quiero es que cuando aparezca la pantalla de los colores yo le haya dicho qué color tiene que mostrar )aparecer selecciono).

No sé si es posible eso. La variable que contiene el color devuelto es de solo lectura.
 

josejad

Expert
Licensed User
Longtime User
La librería XUI Views es un formato b4xlib, que no es más que un zip. Descomprímela y echa un ojo al código del ColorTemplate a ver si te da alguna pista.
 

josejad

Expert
Licensed User
Longtime User
Espero que todo bien Espinosa, en qué pueblo andas?

Mariano, por lo que he probado, tu ejemplo funciona.
 

Espinosa4

Active Member
Licensed User
Longtime User
Gracias compañeros!

Vivo a 10 minutos andando del aeropuerto de Valencia (Manises) y no afectó casi en nada pero mi trabajo sí que quedó totalmente afectado (El ya tristemente famoso barranco del Poio pasa muy cerca de él). Después de una experiencia caótica lo único que tengo que lamentar son pérdidas materiales y estoy contento después de lo que se ha visto en televisión.

Gracias @josejad por probar el código y muchas gracias también @Mariano Ismael Castro por compartir el código.
Un saludo a todos.
 

Espinosa4

Active Member
Licensed User
Longtime User
Hola ya he probado el código y funciona correctamente. El caso es que yo lo hacía igual pero el color en vez de cogerlo de un tipo b4xview lo cogía de un tipo panel y me decía que color solo es de escritura.

Así me daba el error mencionado:
Sub btnColors_Click(Pnl As Panel )
    ColorTemplate.SelectedColor = Pnl.Color
    Wait For (Dialog.ShowTemplate(ColorTemplate, "ACEPTAR", "", "CANCELAR")) Complete (Result As Int)
    If Result = xui.DialogResponse_Positive Then
        Pnl.Color = ColorTemplate.SelectedColor
        Cambios = True
    End If
End Sub



Así Funciona:
Sub btnColors_Click(Pnl As B4XView)
    ColorTemplate.SelectedColor = Pnl.Color
    Wait For (Dialog.ShowTemplate(ColorTemplate, "ACEPTAR", "", "CANCELAR")) Complete (Result As Int)
    If Result = xui.DialogResponse_Positive Then
        Pnl.Color = ColorTemplate.SelectedColor
        Cambios = True
    End If
End Sub

Gracias a todos por vuestra ayuda
Un saludo
 
Top