PDA

Ver la Versión Completa : Pintar celdas StringGrid


cacu
24-10-2007, 15:50:57
Hola a todos los fortistas, qusiera saber si pueden ayudarme con esto:

Quisiera poder pintar celdas de un stringGrid
para eso uso lo siguiente peron no consigo el objetivo
StringGrid1.Canvas.Brush.Color:=clRed;

gradeceria cualquier sugerencia.

jhonny
24-10-2007, 16:11:58
Quizá te sirva el siguiente ejemplo en el OnDrawCell de tu StringGrid:


procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with TDrawGrid(Sender) do
begin
Canvas.Brush.Color := clYellow;
Canvas.FillRect(Rect);
end;
end;

Neftali [Germán.Estévez]
24-10-2007, 16:36:29
Con lo que Jhonny te ha dico deberías tener bastante; Si buscas un ehjemplo completo puedes encontrar uno con el código en la sección de Ejemplos de esta página (http://neftali.clubdelphi.com/). Título: "Color y alineación en celdas de un StringGrid"

cacu
24-10-2007, 16:58:02
Agradesco sus respuestas..
La verdad es que quiciera pintar una sola cel o bien
las celdas que yo escoja...

En ele ejemplo anterior se pintan todas las celdas del Grid
En el segundo Ejemplo si pinta una columna entera..

Gracias

cacu
24-10-2007, 17:22:21
Bien ..Agradesco nuevamente a quienes tan amablemente me respondieron y dieron una solucion.

Quisiera que me disculparan por no haber mencionado el problema mas
detalladamente.

El caso es el siguiente:

Dispongo de un stringrid en el cual voy a mostrar registros de una
base de datos.

Bien en el grid debo destacar con diferentes colres las celdas
que cumplan con un determinado criterio.

por ejemplo:

1.- si el el dato a mostrar cumple con un estado = 1
las celdas donde se muetre ese dato deberan estar
en amarillo
2.- si el dato a mostrar cumple cun un estado = 2
las celdas donde se muestre ese dato deberan estar en
azul.

Bien el dato a mostrar tiene una relacion de fecha a demas
esto es que en cada columna como cabezera tengo fechas
Entonces el siguiente criterio es determinar que el dato a mostrar
se ajuste en la culumna de una fecha determinada..

Bien en el primer criterio , esto es de pintar solo las celdas
que cumplan con dato =1 o dato=2. ya mas menos lo resolvi de esta manera
//Dato a modo de ejemplo puesto que debo de leerlo desde un registro
Var
reserva:Integer;
i:string;
Dato:string;
begin
dato='Paciente 1';
i:= StringGrid1.Cells[x , y];

reserva:=1;
if i <> z then
ACanvas.Brush.Color := clwhite
else
begin

case reserva of
1 :begin
ACanvas.Brush.Color := clyellow;
end;
2 :ACanvas.Brush.Color := clmoneygreen;

3 :ACanvas.Brush.Color := clskyblue;
4 :ACanvas.Brush.Color := clcream;
end
end;

end;