Creo que tu problemas lo puedes resolver utilizando una
"lista" donde guardes el número de fila ó en mi caso guardo el "ID" de la fila que se va dibujar de un
color DETERMINADO al hacer click, ya que dicho ID es único en toda la tabla.
Bueno.. lo que debes hacer es utilizar el evento
OnCellClick del DBGrid y adicionar la fila(en mi caso como ya he mencionado antes,añado el ID de la Fila que está en la primer columna del DBGrid) que tenemos actualmente seleccionada a nuestra
"lista" mas o menos así:
Código Delphi
[-]procedure TForm1.DBGrid1CellClick(Column: TColumn);
var ID:String;
begin
ID:=DBGrid1.Fields[0].AsString; if lista.IndexOf(ID)=-1 then lista.Add(ID);end;
De esa manera cada ves que hagas click en alguna fila, pues se guardará en nuestra lista para que al repintar y/o dibujar las celdas del DBGrid aparescan con algun color que querramos.
Para lograr ésto es necesario además hacer uso del evento
OnDrawColumnCell del DBGrid y poner un código como éste:
Código Delphi
[-]procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var ID:String;
begin
ID:=Column.Field.DataSet.Fields[0].AsString; if lista.IndexOf(ID)>-1 then begin
(Sender as TDBGrid).Canvas.Brush.Color:=clGreen; (Sender as TDBGrid).Canvas.Font.Color:=clBlack; (Sender as TDBGrid).DefaultDrawColumnCell(Rect,DataCol,Column,State); end;
end;
Por supuesto que no hay que olvidarse de crear(intanciar) a nuestra lista, que en éste caso uso un objeto
TStringList , lo puedes hacer en el evento
OnCreate del formualrio:
Código Delphi
[-]procedure TForm1.FormCreate(Sender: TObject);
begin
Lista:=TStringList.Create;end;
Tampoco hay que olvidarse de destruirlo, lo podemos hacer en el evento
OnDestroy tambien del formulario:
Código Delphi
[-]procedure TForm1.FormDestroy(Sender: TObject);
begin
Lista.Free;
end;
Con eso creo que cada vez que hagas click el alguna fila(o celda) del DBGrid, ésta se pintará del color que quieras, en mi caso estoy usando un color verde (clGreen)
.
Espero te sea de utilidad...
Saludos...