SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: Linspire en Viernes 25 de Agosto de 2006, 20:13

Título: Pintar Celdas De Stringgrid
Publicado por: Linspire en Viernes 25 de Agosto de 2006, 20:13
Pue bien amigos, resulta que quiero pintar los renglones de un StrinGrid de dos en dos para que se parezca al iTunes de Apple, para ello he generado el siguiente código.

int i,j;
        AnsiString clase[2]={"clRed","clBlue"},color;

        for(i=1;i<=StringGrid1->RowCount;i++)
        {
                for(j=0;j<=1;j++)
                {
                        color=clase[j];
                        StringGrid1->Color=clase;
                }
        }

al parecer todo esta bien, solo que hay un pequeño detalle, resulta que StringGrid1->Color al parecer no acepta una variable como valor, por lo tanto no puedo hacer lo que hago en el código, salvo ponder un color ya definido, por ejemplo StrinGrid1->Color=clRed; pero obiamente esto me pintará todos los renglones de rojo y lo que yo quiero es que uno sea rojo, otro azul, otro rojo y asi sucesivamente, alguien sabe que hacer en este caso?

De antemano gracias por las respuestas.

 :blink:  :unsure:  :comp:  :whistling:
Título: Re: Pintar Celdas De Stringgrid
Publicado por: eL_MoStRo en Martes 29 de Agosto de 2006, 06:53
Hola!, por que no intentas asignandole un entero, afin de cuentas los valores de clBlue, clRed, no son mas que un enumerado, haz una prueba asignando un entero tal vez te de una advertencia de querer asignar un entero a un TColor si no kieres que aparezca solamente haz el cast y listo
Código: Text
  1.  
  2. int i,j;
  3. int clase[2]={10,100};
  4.  
  5. for(i=1;i&#60;=StringGrid1-&#62;RowCount;i++)
  6. {
  7.     for(j=0;j&#60;=1;j++)
  8.     {
  9.         StringGrid1-&#62;Color=clase[j];
  10.     }
  11. }
  12.  
  13.  

pero con esto solo lograras pintar todo el StringGrid no cada renglon. Espero y te sirva de ayuda
Título: Re: Pintar Celdas De Stringgrid
Publicado por: eL_MoStRo en Martes 29 de Agosto de 2006, 07:23
Citar
    int iX1,iY1, iX2, iY2;
    iX1 = iY1 = iX2 = iY2 = 0;
    for (int iI = 0; iI < StringGrid1->RowCount; iI++)
    {
        StringGrid1->Canvas->Pen->Style = psClear;
        StringGrid1->Canvas->Brush->Color = iI * 150;
        iX1 = 0;
        iY1 = iY2;
        iX2 = StringGrid1->DefaultColWidth * StringGrid1->ColCount + StringGrid1->GridLineWidth * StringGrid1->ColCount;
        iY2 = iY1 + StringGrid1->DefaultRowHeight + StringGrid1->GridLineWidth * 2;
        StringGrid1->Canvas->Rectangle(iX1, iY1, iX2, iY2);
    }

Talvez esto te ayude solo sustituye el valor del entero en el color para ver los resultados
Título: Re: Pintar Celdas De Stringgrid
Publicado por: Linspire en Martes 29 de Agosto de 2006, 15:33
Bueno, pues no es precisamente lo que deseaba pero de todas formas gracias a ambos por las respuestas, enalizaré el código un poco más a fondo.

Gracias de nuevo.  :hola:  :comp:  :kicking: