Ver Mensaje Individual
  #5  
Antiguo 28-07-2016
Avatar de BDWONG
BDWONG BDWONG is offline
Miembro
NULL
 
Registrado: nov 2013
Posts: 113
Reputación: 11
BDWONG Va por buen camino
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
      //paint the background Green
      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
      //paint the background Green
      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.....
Responder Con Cita