none
Aplicar Colores a un Form desde una Base de Datos RRS feed

  • Pregunta


  • Estimados Sabios del Foro

    No logro que se apliquen los colores a un form.

    Algo (¿Conversión de Datos?, ¿Otra cosa?) seguramente estoy haciendo mal

    Este es el código que utilizo:

    internal void CtrlColorCarga(Form Frm, DataGridView Dgv = null)
    {
        //                                                  Ruta y Nombre de la Base de Datos
        string P = Application.StartupPath;
        if(!P.EndsWith("\\")) P += "\\";
        P += "BiblioCode.Db";
        //                                                  Crea Instancia de la clase
        BiblioCodeCSh._02_Clases.CsLite
            BDD = new BiblioCodeCSh._02_Clases.CsLite();
        //                                                  Pasa Ruta a la Instancia
        BDD.A1_BdDRutaNom_Vs = P;

        //La Tabla Contiene: Form       Color Fondo Color Texto
        //                   F01_BibCod   -7410435   -16744256

        //                                                  Query a Tabla
        string Q = "SELECT C2_Fondo, C3_Texto "
               +   "FROM A3_Color WHERE C1_Form = '" + Frm.Name + "';";
        //                                                  Carga Datos
        DataTable D =  BDD.A1_Carga_DT(Q);
        if (D.Rows.Count == 0) return;

        //                                                  Crea DataRow
        DataRow[] R = D.Select();
        //                                                  Aplica Color de Fondo
        if (R[0][0] != DBNull.Value)
            Frm.BackColor = Color.FromArgb(Convert.ToInt32(R[0][0]));

        //                                                  Aplica Color de Texto
        if(R[0][1] != DBNull.Value)
            Frm.ForeColor = Color.FromArgb(Convert.ToInt32(R[0][1]));

        //                                                  Mata Instancia de la Clase
        BDD = null;
        //                                                  Refresca el Form
        Frm.Refresh();

        //              Y los Colores NO cambian en el Form
    }
    Agradezco de ante mano cualquier orientación

    Atentamente [Best Regards] [Amicalement] Ivan Pequeño Andrade


    lunes, 27 de julio de 2020 14:59

Respuestas

  • Hola Ivan Pequeño A,

    Si te refieres a como se elige una respuesta, simplemente tienes que dar click en marcar como respuesta en el menú de opciones que aparecen al final de cada post. Gracias por usar los foros de MSDN.


    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    • Marcado como respuesta Ivan Pequeño A viernes, 31 de julio de 2020 12:42
    viernes, 31 de julio de 2020 0:10
    Moderador

Todas las respuestas

  • Estas usando Frm para referirte al formulario y tiene que ser this.

    this en la referencia a si mismo 

    ejemplo:

      this.ForeColor = Color.FromArgb(12,12,12);


    Manuel Zaragoza



    • Editado ManuelMZ lunes, 27 de julio de 2020 15:20
    lunes, 27 de julio de 2020 15:18
  • Gracias por su respuesta,

    pero NO es el Caso Frm es un form pasado a la función (con this)

    desde un formulario externo.


    Atentamente [Best Regards] [Amicalement] Ivan Pequeño Andrade

    lunes, 27 de julio de 2020 15:25
  • Hola Ivan Pequeño A,

    La mejor manera es almacenando el color en formato hexadecimal en un campo de la base de datos nvarchar (7), los colores los guardas así: "#ffffff". También podrías utilizar un campo varchar (6), funcionaría igual de bien y ocuparía menos espacio en tu base de datos. La idea sería guardarlo sin el "#", por lo que se lo tendrías que agregar en tu código. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    jueves, 30 de julio de 2020 22:12
    Moderador
  • Estimado Gabriel Castro,

    Muchas gracias por su información

    Actualmente, estoy grabando de la siguiente forma::

    //                                                  Aplica Color de Fondo
    if(R[0][0] != DBNull.Value)
        Frm.BackColor = Color.FromArgb(Convert.ToInt32(R[0][0]));

    Y funciona correctamente para SQL-Server, SQLIte y Db2 LUW,

    Tanto en Windows como en Linux-Ubuntu...

    Ps: ¿Donde marco su mail como respusta?


    Atentamente [Best Regards] [Amicalement] Ivan Pequeño Andrade

    jueves, 30 de julio de 2020 22:40
  • Hola Ivan Pequeño A,

    Si te refieres a como se elige una respuesta, simplemente tienes que dar click en marcar como respuesta en el menú de opciones que aparecen al final de cada post. Gracias por usar los foros de MSDN.


    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    • Marcado como respuesta Ivan Pequeño A viernes, 31 de julio de 2020 12:42
    viernes, 31 de julio de 2020 0:10
    Moderador
  • Hola Ivan Pequeño A,

    Muchas gracias, saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    viernes, 31 de julio de 2020 20:50
    Moderador