Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-05-2011
Avatar de aams01
aams01 aams01 is offline
Miembro
 
Registrado: ago 2010
Posts: 44
Poder: 0
aams01 Va por buen camino
Question Pintar StringGrid

Hola con respecto al tema se que se cuenta con demasiada infomacion y temas, una de las diferencias o por lo cual abro otro tema es la siguiente
es en C++, a los demas les funciona y a mi no.
lo que quiero es pintar un renglon si y otro no (azul,blanco,azul,blanco,.......)
Tengo el siguiente codigo en el evento SGVentasDrawCell()
Código:
 if (ARow!=0) {
    if (ARow%2==0 ){
	SGVentas->Canvas->Brush->Color = clBlue;
	SGVentas->Canvas->Rectangle(Rect);
	SGVentas->Canvas->Font->Style << fsBold;
	SGVentas->Canvas->Font->Color = clWhite;
     }
  }
Lo que hace es pintar como antes mencione, pero el error en si es el texto
no se si el color de Brush se ponga por encima del renglon o si el texto simplemente no tiene color.
Por que en el renglon que se pinta Azul no se ve el texto (al entrar para editar si se encuentra).
Alguien que me pueda orientar
__________________
El Software es como el Sexo, si es de gratis es Mejor
Responder Con Cita
  #2  
Antiguo 06-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Probá de este modo:
Código:
void __fastcall TForm1::gridDrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
  TStringGrid *StrGrd = dynamic_cast<TStringGrid*>(Sender);

  if (ARow != 0 && ARow%2 != 0 ){
   StrGrd->Canvas->Brush->Color = clBlue;
   StrGrd->Canvas->Rectangle(Rect);
   StrGrd->Canvas->Font->Style << fsBold;
   StrGrd->Canvas->Font->Color = clWhite;
   DrawText(StrGrd->Canvas->Handle, StrGrd->Cells[ACol][ARow].c_str(),
            StrGrd->Cells[ACol][ARow].Length(), &Rect,
            DT_SINGLELINE | DT_VCENTER);
 }
}
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 06-05-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Exacto, la razón es que pintas un rectángulo sólido con lo que tienes que pintar también el texto.

La única pega que se puede poner al buen ejemplo de ecfisa es que el texto se pintarán las líneas desaclopadas. Quizás desplazando un poco a la derecha y abajo el texto...

Código:
  TStringGrid *StrGrd = dynamic_cast<TStringGrid*>(Sender);
  if (ARow!=0) {
    if (ARow%2==0 ){
      StrGrd->Canvas->Brush->Color = clBlue;
      StrGrd->Canvas->Rectangle(Rect);
      StrGrd->Canvas->Font->Style << fsBold;
      StrGrd->Canvas->Font->Color = clWhite;
      InflateRect(&Rect, -2, -2);
      DrawText(StrGrd->Canvas->Handle, StrGrd->Cells[ACol][ARow].c_str(), StrGrd->Cells[ACol][ARow].Length(), &Rect, 0);
    }
  }
Saludos.
Responder Con Cita
  #4  
Antiguo 07-05-2011
Avatar de aams01
aams01 aams01 is offline
Miembro
 
Registrado: ago 2010
Posts: 44
Poder: 0
aams01 Va por buen camino
Talking Gracias

Gracias por su apoyo, el código era algo similar solo una modificacion ya que utilizo c++ 2010 y han de saber es mas caprichoso.
Utilize el codigo que puso escafandra ya que como menciono el codigo de ecfisa movia un poco el texto a la izquierda.
Modificacion:
Código:
DrawText(StrGrd->Canvas->Handle, StrGrd->Cells[ACol][ARow].c_str(),
		  StrGrd->Cells[ACol][ARow].Length(), &Rect, 0);
Por
Código:
DrawTextW(StrGrd->Canvas->Handle, StrGrd->Cells[ACol][ARow].c_str(),
		  StrGrd->Cells[ACol][ARow].Length(), &Rect, 0);
Bueno con este codigo que me brindaron me entro una duda para que sireve o se utiliza InflateRect(&Rect, -2, -2);
y que es &Rect

Otra cosa no se si an notado que los colores de builder son demasiado llamativos como puedo utilizar otros aparte de la funcion RGB() ya que esta me manda Warning
Gracias de antemano y por su apoyo
__________________
El Software es como el Sexo, si es de gratis es Mejor
Responder Con Cita
  #5  
Antiguo 07-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

InflateRect incrementa/decrementa el ancho y/o largo de un rectángulo: InflateRect Function

Para definir colores personalizados desde el Object Inspector, doble click sobre la propiedad color y click sobre el botón "Definir colores personalizados".

Desde código en forma directa:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   Edit1->Color = 0x007C88ED;
}
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-05-2011 a las 05:12:07.
Responder Con Cita
  #6  
Antiguo 07-05-2011
Avatar de aams01
aams01 aams01 is offline
Miembro
 
Registrado: ago 2010
Posts: 44
Poder: 0
aams01 Va por buen camino
Talking

Gracias nunca se me había ocurrido dar doble click.
aunque una diferencia en el modo de asignación el color sale con el sig. formato desde la propiedad color
$007C88ED ay que cambiar el signo de $ y poner 0x007C88ED
esto por si a alguien le interesa
__________________
El Software es como el Sexo, si es de gratis es Mejor

Última edición por aams01 fecha: 07-05-2011 a las 06:33:23. Razón: sugerencia de codigo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
stringgrid en celda de otro stringgrid?? noodle_ OOP 3 17-06-2008 13:36:01
Pintar en Timage fasthorse Gráficos 1 15-05-2008 14:32:14
Pintar celdas StringGrid cacu OOP 4 24-10-2007 17:22:21
Pintar celda de un StringGrid huevozen C++ Builder 1 31-08-2006 17:00:19
pintar una celda... eli.vidal Impresión 1 14-11-2005 16:31:27


La franja horaria es GMT +2. Ahora son las 16:41:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi