PDA

Ver la Versión Completa : Simular MaxLengh en celda stringgrid


voldemmor
12-03-2009, 16:54:19
Hola amugos no se si me explico deseo simular la propiedad MaxLeng(maximo de caracteres) pero para una columna dada.

se que puedo saber que columna es mediante StringGrid1.Col

Gracias por todo

AFilth
12-03-2009, 17:20:56
En el evento OnChange de la celda puedes cmprobar el length de la cadena que te están metiendo y validarla.

roman
12-03-2009, 17:49:36
Las celdas de un StringGrid no tienen eventos :confused:

-------------------------------------------------------

La clase TCustomGrid (de la cual deriva TStringGrid) tiene el método GetEditLimit que sirve para establecer la longitud máxima del InPlaceEditor -el TEdit que se usa conforme nos movemos por las celdas.

Tendrías que redefinir ese método en un derivado de TStringGrid. Una manera fácil de hacerlo sin tener que crear e instalar un nuevo componente es declarando un descendiente homónimo antes de la declaración del formulario:


type
TStringGrid = class(Grids.TStringGrid)
protected
function GetEditLimit: Integer; override;
end;

TForm1 = class(TForm)
...
end;


Y defines el método así (por ejemplo):


function TStringGrid.GetEditLimit: Integer;
begin
if Col = 1 then
Result := 5
else
Result := 0;
end;


// Saludos

voldemmor
13-03-2009, 14:42:32
Voy a probar la opcion que medas roman muchas gracias por todo.
Espero no me surjan problemas.