Buenos días. Estaba mirando mi última entrada en este foro fue el diciembre 2012. Como pasa el tiempo...
Estimados una consulta sobre Delphi7 (tal vez los otros también) sobre un funcionamiento extraño de TStringGrid
.- Puse en un Formulario un TStringGrid con 3 columnas y 10 filas
.- lo hice más corto para que para bajar a las últimas lineas haya que usar la barra de desplazamiento
.- para ponerle unos datos le puse:
Código:
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
for i:=1 to StringGrid1.RowCount-1 do begin
StringGrid1.Cells[1,i]:='A';
StringGrid1.Cells[2,i]:='B';
end;
end;
.- Quiero que la columna 2 no sea editable entonces
Código:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if (ACol = 2) then
StringGrid1.Options :=StringGrid1.Options-[goediting]
else
StringGrid1.Options :=StringGrid1.Options+[goediting];
end;
.- Por para que se edite sin doble click seteo el StringGrid como
[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,
goEditing,goAlwaysShowEditor]
Ahora... hago click en cualquier celda de la columna 1 (queda marcado para editar) y luego hago click en la columna 2 (la que no es editable)
.- Si ahora bajo el cursor por la columna 3 hasta que necesite desplazar hacia arriba, al hacerlo el valor que queda en la columna 2 es el de la columna 1. (En realidad si le ponen valores distintos es el último editable que seleccioné).
El problema es que hice una aplicación enorme y esta tontería me la achacan a un bug mío (durante un tiempo yo pensé lo mismo). Alguien sabe como corregirlo?