PDA

Ver la Versión Completa : Color distintivo en DBgrid segun fechas


amadis
29-09-2007, 15:50:48
Que tal Gente.

Estoy tratando de pintar lor registros de un DBgrid de dos colores segun un campo fecha.

Si bien hay varios hilos sobre colorear DBgrids, de todos no logré el pintado que deseo.

Que es simplemente saber si el registro siguiente tiene la misma fecha que el actual, si tiene la misma fecha lo pinto del mismo color que el actual(clInfoBk), caso contrario lo dejo color blanco.

Y eso para cada registro, de modo que en la grilla se vean separadas las distintas fechas.

Resultando el pintado de la grilla algo asi.

Fecha (color de pintado)
10/09/07 blanco
10/09/07 blanco
10/09/07 blanco
12/09/07 clInfoBk
12/09/07 clInfoBk
12/09/07 clInfoBk
13/09/07 blanco
13/09/07 blanco
14/09/07 clInfoBk

Lo que me falta es saber por medio del metodo DBgrid1.Dataset ¿que valor de fecha tiene el siguiente registro??

Espero haberme explicado bien!

Gracias

aeff
29-09-2007, 17:31:35
saludos, no se si te entendí, de todas formas revisa el pequeño codigo que he estado desarrollando para por medio del metodo DBGrid.DataSource.DataSet sacar el valor del campo siguiente al campo en el que estas actualmente, ¿me entiendes no?, entonces, estos codigos van en el evento DrawColumnCell del DBgrid, quedando así:


procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
fIndex: Integer;
begin
fIndex := DBGrid1.DataSource.DataSet.FieldByName(Column.FieldName).Index;
if fIndex < DBGrid1.DataSource.DataSet.FieldCount -1 then
Caption := DBGrid1.DataSource.DataSet.Fields[fIndex + 1].AsString
end;


ahora, esto da un poco de dolor de cabeza, a veces se queda sin mostrar el valor del campo siguiente pero eso ya debe ser problema del evento en el que programes para calcular este valor,

espero que te sirva de algo,

saludos!
aeff!!

amadis
03-10-2007, 20:00:21
Estube tratando de adaptar ese codigo a mi necesidad pero no hay forma!

Con eso obtengo el valor dle campo siguiente.

Necesito saber el valor del campo FECHA del regsitro siguiente. Simplemente eso para compararlo al valor del campo actual y si es diferente pinto la celda de otro color.

¿alguna idea?

¿Algun evento o propiedad que sugieran estudiar?

Gracias