PDA

Ver la Versión Completa : Dbgrid


Victorialerda
19-07-2012, 16:34:38
Queremos pintar una fila en un dbgrid con este código:

private
{ Private declarations }
UnColor:TColor;

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
clPaleGreen = TColor($CCFFCC);
clPaleRed = TColor($CCCCFF);
begin
if Column.Field.Dataset_AGENDA.FieldbyName('HORA').AsInteger < 5
then
if (gdFocused in State) then
dbgrid_RECORDATORIOS.canvas.brush.color := clBlack
else
dbgrid_RECORDATORIOS..canvas.brush.color := clPaleGreen;
dbgrid_RECORDATORIOS..DefaultDrawColumnCell(rect,DataCol,Column,State)
end;


y nos tira error q undelared identifier. 'ibsataset:agenda'. a lo entendido como que no esta identificada y lo declare en el uses y igual me tira el error. ¿alguna solucion para este problema?
gracias.

MartinS
19-07-2012, 17:22:24
Hola,
Pregunta tonta, ¿comprobaste los nombres?

ibsataset:agenda tal ves sea IbDataset_Agenda o algo, no se si se puede usar los ":" o quisiste poner ibsataset := Agenda y tambien fijate que si tomas mas o menos los nombres que por defecto usa delphi tal vez el error esta en que debe ser ibdataset y no ibsataset.-

Pone si no en que linea salta el error ya que en el codigo que adjuntaste no veo la linea del problema.-

Saludos.-

Casimiro Notevi
19-07-2012, 17:29:47
Victorialerda, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)

Recuerda poner los tags al código fuente, ejemplo:

http://neftali.clubdelphi.com/images/UtilizarTAGs.png

También debes poner títulos descriptivos a tus preguntas, 'dbgrid' no es un título que describa nada.


Gracias :)

Casimiro Notevi
19-07-2012, 17:32:39
A simple vista, en estas dos líneas has puesto dos puntos seguidos, debe ser sólamente uno.

dbgrid_RECORDATORIOS..canvas.brush.color := clPaleGreen;
dbgrid_RECORDATORIOS..DefaultDrawColumnCell(rect,DataCol,Column,State)

ecfisa
19-07-2012, 17:54:08
Hola Victorialerda.

Otro detalle que estoy viendo en tu código es:

if Column.Field.Dataset_AGENDA.FieldbyName('HORA').AsInteger < 5 then

Y "Dataset_AGENDA.FieldbyName" no es una propiedad o método de Column.


Deberías realizarlo mas o menos de este modo:

if TDBGrid(Sender).DataSource.DataSet.FieldByName('HORA').AsInteger < 5 then


Saludos.