Ver Mensaje Individual
  #9  
Antiguo 14-02-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Reputación: 20
keyboy Va por buen camino
Te propongo una alternativa que cubriría todos los casos.

En el formulario donde tienes el StringGrid, coloca esta declaración:

Código Delphi [-]
type
  TStringGrid = class(Grids.TStringGrid)
  protected
    function GetEditLimit: Integer; override;
  end;

  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Esto define una clase derivada de TStringGrid que se llama igual. Al colocarla antes de la declaración del formulario, logras que el StringGrid que ahí tienes, sea ahora de la nueva clase.

En dicha nueva clase, lo que hacemos es redefinir el método virtual GetEditLimit. Este método indica cuál es el máximo número de caracteres que acepta una celda del grid. El método original simplemente regresa 0, indicando que no hay límite. Nosotros podemos definirlo para dar distintos valores, según las circunstancias:

Código Delphi [-]
function TStringGrid.GetEditLimit: Integer;
begin
  // Si estamos en la columna 2 ...
  if Col = 2 then
    Result := 50
  else
    Result := inherited GetEditLimit;
end;

Bye
Responder Con Cita