Delphi - Problema StringGrid con celda azul sin foco

 
Vista:

Problema StringGrid con celda azul sin foco

Publicado por Antonio (6 intervenciones) el 29/11/2006 19:55:48
Hola compañeros, llevo ya mucho tiempo usando un StringGrid y el problema que tengo es el siguiente:
El StringGrind lo tengo configurado con la opcion goRowSelect, y sin estar enfocado el StringGrid, tengo las celdas marcadas en azul. Esto parece una tonteria, pero induce a error, ya que no se sabe que componente esta activo.

Me gustaria que cuando no esta enfocado no estubiese ninguna celda tintada de azul.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema StringGrid con celda azul sin foco

Publicado por Delfino (1216 intervenciones) el 30/11/2006 13:28:13
Prueba con este codigo en el evento OnDrawCell:

if (gdSelected In State) and not grid.Focused then
begin
grid.Canvas.brush.Color := grid.color;
grid.canvas.font.color := grid.font.color;
grid.canvas.FillRect( Rect );
InflateRect( rect, -2, -2 );
grid.Canvas.TextRect( Rect, rect.left, rect.top, grid.cells[aCol, aRow]);
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema StringGrid con celda azul sin foco

Publicado por Antonio (6 intervenciones) el 01/12/2006 16:58:55
Muchas Gracias por la ayuda, funciona perfectamente. Y si no es mucha molestia, tengo otro pequeño problema.
Quiero usar usar este StringGrid para introducir datos tambien, y la idea es que:
cuando este en una fila del grid con datos introducidos activo el goRowSelect, pero cuando selecciono cualquier otra fila sin datos lo pongo en goEditing.

Lo que hago es lo siguiente, NumRegistros es una variable donde llevo el numero de Registros introducidos.

procedure TForm1.GridSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
if (ARow>NumRegistros) then
Grid.Options:=Grid.Options-[goRowSelect]+[goEditing]
else
Grid.Options:=Grid.Options+[goRowSelect];
end;

El problema surge cuando pasa de haber estado en una celda activa con [goEditing] a una celda con [goRowSelect]. el cambio no se produce instantaneamente, sino que se produce a la segunda pulsacion en otra celda con [goRowSelect]

¿A que se debe esto? ¿Como lo puedo solventar?

Muchas Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar