Ver Mensaje Individual
  #37  
Antiguo 02-03-2016
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Reputación: 25
egostar Va camino a la fama
Hola

Después de un tiempo sin poder atender éste asunto debido a carga laboral, pude dar un vistazo al problema que mencionas y se puede resolver fácilmente.

1. Cuando dices :

Cita:
Cuando el contenedor del TStringGrid, (en este caso el TScaledLayout) es más largo que el TStringGrid y el TStringGrid está alineado al Top, si tienes una TLabel, en la que puedes ver la fila y la columna seleccionadas, aunque hayas definido la rejilla de 9x9, (por ejemplo) si pulsas por debajo de la rejilla y dentro de su contenedor verás que parece que has pulsado una fila MAYOR que 9.
No estás pulsando debajo del StringGrid, estás pulsando dentro del StringGrid como lo puedes ver en la imagen que enlazo.

https://plus.google.com/u/0/photos/p...98556772600978

2. Por otro lado, efectivamente, hay un detalle "raro" que al pulsar fuera del área de celdas pero dentro del mismo StringGrid cambie de celda aunque siempre permanezca en la última fila, sin embargo, el método SelectCell tiene una variable llamada CanSelect de tipo Boolean que nos ayudará a resolver el punto.

Te muestro el código que usé para resolver el problema, aunque yo forzaría a que no existiera ninguna zona extra en el StringGrid y que la cuadricula sea exacta como te lo muestro en ésta imagen.

https://photos.google.com/photo/AF1Q...emMxB37CCvSqLH

Código Delphi [-]
procedure TForm1.grdTableroSelectCell(Sender: TObject; const ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  if ARow <= grdTablero.RowCount then
  begin
    CanSelect := true;
    Label4.Text := 'Columna = '+ ACol.ToString + '  /  '+
                   'Fila = '+ ARow.ToString;
    Label1.Text := 'Última casilla pulsada: ' +  ACol.ToString + ',' + ARow.ToString;
  end
  else begin
         CanSelect := false;
  end;
end;

3. No sé la razón por la cual el nuevo StringGrid permite seleccionar columnas aunque no existan mas filas asignadas en la propiedad RowCount, de cualquier forma lo voy a pasar a otra instancia para saber porque funciona de esa forma o para que se tome en cuenta como punto de mejora.

Saludos
Responder Con Cita