Ver Mensaje Individual
  #1  
Antiguo 27-02-2012
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Reputación: 20
elcigarra Va por buen camino
Bug en TStringGrid (goAlwaysShowEditor) o es correcto?

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?
Responder Con Cita