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