Cita:
Empezado por jzk
Tengo un dbgrid...
|
Cita:
Empezado por roman
Esto no es posible. Es decir, el StringGrid...
|
Creo que cada uno váis en una dirección, distintas, por cierto...
Cita:
Empezado por jzk
Tengo un dbgrid que utilizo para mostrar un calendario donde en el eje "X" muestro los días y en el "Y" las tareas que tengo pendientes por hacer.
Mi intención es si para el lunes (por ejemplo) tengo la tarea nº1 asignada, la casilla que corresponde en el DBgrid colorear de color rojo y si no es así manternerlo del color predefinido.
|
Si utilizas un DBGrid, entiendo que por debajo tienes una tabla/consulta con los datos necesarios; La manera más clara para colorear celdas de un DBGrid es pensar en los datos, no en las celdas.
Segun lo que explicas, tu tabla debería ser una tabla de tareas, con un campo para cada día de la semana.
(a) Si esto es correcto
seguir.
(b) Si no es correcto (entonces es que no me he enterado de nada)
goto fin.
El evento que debes utilizar en un DBGrid es el OnDrawColumnCell. Preguntas por el valor del campo y si hace falta modificas el color. Prueba con algo como ésto:
Código Delphi
[-]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (State = []) then begin
if (DBGrid1.Columns[Datacol].Field.AsString = 'A') then begin
DBGrid1.Canvas.Brush.Color := clRed;
DBGrid1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end;
end;
end;
También puedes revisar éste
hilo, ahí tienes algunos enlaces.