Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-11-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
Question cambiar color StringGrid, toda una fila, despues de la primera.

hola que tal

eh estado viendo en el foro. sobre como cambiar el color de uan fila en un stringgrid

pero asta orita nomas eh visto cambiar el color de una celda. no de toda una fila o renglon.

una de estas forma es este:
Código Delphi [-]
 Procedure TForm1.Grid1DrawCell(Sender: TObject; ACol, ARow: 
  Longint; Rect: TRect; State: TGridDrawState);

Begin
  with Sender as TDrawGrid do
  begin
    if (aCol = 3) and (FSeleccionada) then  
    Begin
      // solamente tomaremos acción cuando sea la columna 3
      // FSeleccionada es un miembro privado booleano de la clase que 
      // indica si la celda de la la columna debe pintarse de un color o de otro
      Canvas.Brush.Color := clBlue;
      Canvas.Font.Color := clWhite;
    end
    else Begin
      Canvas.Brush.Color := clBackGround;
      Canvas.Font.Color := clBlack;
    end;
    Canvas.FillRect(Rect);
    Canvas.TextRect(Rect, 0, 0, (Sender as TStringGrid).Cells[ACol, ARow]);
    if gdFocused in State then
      Canvas.DrawFocusRect(Rect);
    end;
  end;
end;
__________________
OpenSuse OpenOffice.org icomputo
Responder Con Cita
  #2  
Antiguo 25-11-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
¿Y cuál era tú duda?

Acaso es ¿Cómo cambiar el color de toda una fila en un StringGrid?

Simple en el código que publicaste sólo modifica el condicional

Código Delphi [-]
  if ACol=3 then

por

Código Delphi [-]
  if ARow=x then

Saludos

Última edición por Héctor Randolph fecha: 25-11-2005 a las 22:24:03.
Responder Con Cita
  #3  
Antiguo 25-11-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hola.

El código publicado lo dejé yo hace tiempo en este hilo.

Creo que al introducir una pregunta en dicho hilo, debiste haber aclarado cual era tu objetivo allá mismo, y no abrir un nuevo hilo. Luego, me parece que lo normal sería colocar al menos una referencia a donde habías obtenido el código, ¿no te parece?

Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 26-11-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
bueno gracias por contestar.

bueno creo lo que tengo es un problema espesifico.


eh tratado de modificar las condiciones para poder que me arroje el resultado que deseo que es.


digamos tengo el StringGrid con los campos

nombre | direccion | cantidad | sucursal
tecate calle 3 matriz
tecate otracalle 1 sucursal1
tecate calle 1 sucursal2
tecate calle 1 sucursal3


entonses digamos que lleno el primer campo nombre (nombre de la empresa)
direccion(calle cuaquiere), cantidad(de cuantas sucursales va tener), sucursal(Nombre de la sucursal).

entonses cuando de "enter" el la primera linea me arroja el resultado de las otra 3 sucursales, esto hace referencia a las cantidad = 3.

entonses yo quiero poder pintar diferente, del renglon principal, alos renglones hijos, pintandolos de color diferente, al renglon principal,

no eh podido hayar la condicion para dividir cuando pintar el colo diferente, dependiendo de la "cantidad" del renglon principal.


gracias espero haver sido mas claro

saludos
__________________
OpenSuse OpenOffice.org icomputo
Responder Con Cita
  #5  
Antiguo 26-11-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola sakuragi.

Me he permitido modificar el código que publicó Juan Antonio para adaptarlo a tu pregunta.

Las modificaciones que hice son para consultar el contenido de una columna en específico y pintar el renglón actual dependiendo de una condición.

En este ejemplo consulto el contenido de la columna 3 y si el contenido es par, entonces pinto todo el renglón de azul.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  I:Integer;
begin
  // Llena el grid con algunos números
  StringGrid1.RowCount:=6;
  StringGrid1.ColCount:=6;
  for I:=1 to 5 do
    StringGrid1.Cells[3,I]:=IntToStr(I);
  StringGrid1.Invalidate;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  S:String;
  Col3: Integer;
begin
    Col3:=-1;
    S:=(Sender as TStringGrid).Cells[3, ARow];
    if S<>'' then Col3:=StrToInt(S);
    with Sender as TStringGrid do
    begin
      if (ACol < FixedCols) or (ARow < FixedRows) then //Es una celda fija?
        Canvas.Brush.Color := FixedColor
      else
      if ( Col3 mod 2 =0) then // El contenido de la columna 3 es par?
      Begin
        Canvas.Brush.Color := clBlue;
        Canvas.Font.Color := clSilver;
      end
      else Begin
        Canvas.Brush.Color := Color;
        Canvas.Font:= Font;
      end;
      Canvas.FillRect(Rect);
      Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, (Sender as TStringGrid).Cells[ACol, ARow]);
      if gdFocused in State then Canvas.DrawFocusRect(Rect);
    end;
end;

Sólo falta adaptarlo para tu caso en particular.

Saludos
Responder Con Cita
  #6  
Antiguo 28-11-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
gracias

lo probare


saludos
__________________
OpenSuse OpenOffice.org icomputo
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


La franja horaria es GMT +2. Ahora son las 17:12:48.


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