Hola después de investigar y preguntar he dado con la solución, cabe aclarar que todo estas pruebas están hechas en
lazarus 1.6 pero supongo que funcionara de manera muy similar en Delphi aunque claro puede haber diferencias.
Primero como mencione se necesita utilizar el evento
onDrawCell del
stringGrid ahi colocamos lo siguiente
Código Delphi
[-]if (ACol >=1) and (ARow =StringGrid1.Row) then
with TStringGrid(Sender) do
begin
Canvas.Brush.Color := clBlue;
Canvas.FillRect(aRect);
Canvas.TextOut(aRect.Left+2,aRect.Top+2,Cells[ACol, ARow]);
end;
if (ACol = StringGrid1.Col) and (ARow = StringGrid1.Row) then
with TStringGrid(Sender) do
begin
Canvas.Brush.Color := clYellow;
Canvas.FillRect(aRect);
Canvas.TextOut(aRect.Left+2,aRect.Top+2,Cells[ACol, ARow]);
end;
El primer if valida que no se pinte las celdas estaticas (las que esta en gris) y solo pinte las celdas que se encuentren en la fila seleccionada por el usuario, el segundo if se encarga de cambiar el color a la celda que tenga el foco,
Como mencione arriba había el código tenia unos problemas al momento de de seleccionar las celdas estáticas ya que después no pintaban de manera correcta no se si el problema sea único de Lazarus o también es similar en Delphi.
Video donde muestro el error:
https://www.youtube.com/watch?v=xu3t...ature=youtu.be
Para corregirlo basta con llamar a la propiedad
invalidate que lo que hace es informar que se necesita repintar el
stringGrid este propiedad se llama dentro del evento
OnSelectCell o
OnSelection ambas funciona.
En mi caso lo puse en
OnSelectCell
Código Delphi
[-]procedure TForm1.StringGrid1SelectCell(Sender: TObject; aCol, aRow: Integer;
var CanSelect: Boolean);
begin
StringGrid1.Invalidate;
end;
Agradezco al foro de Lazarus por su ayuda
http://forum.lazarus.freepascal.org/...c,33490.0.html
Me pareció interesante publicarlo acá por si otros tiene el mismo problema.
Saludos.....