Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Numero máximo caracteres en un TEdit (maxlength) (https://www.clubdelphi.com/foros/showthread.php?t=84613)

jocaro 12-11-2013 11:02:25

Numero máximo caracteres en un TEdit (maxlength)
 
Hola

Tengo interés en ver el evento y el código fuente que controla el número máximo de caracteres en un TEdit. He intentado encontrarlo en el Vcl.StdCtrls.pas, he intentado encontrar el evento onkeypress, pensando que es ahí donde se controla, pero no he conseguido esa información.

Alguno de vosotros me puede indicar como encontrar ese código.

Gracias por vuestra ayuda

Un saludo

José Luis Garcí 12-11-2013 13:13:26

si no recuerdo mal algo de eso ley hace años creo recordar que lo que hacia en el OnChange era un lenght al text si este era igual o superior disparaba el OnExit y pasaba al siguiente control, eto fue visto en un componente Edit, no el de Borland, de un tercero, recuerdo que era un componente freeware, pero no recuerdo el nombre del componente.

jocaro 12-11-2013 14:47:33

Cita:

Empezado por José Luis Garcí (Mensaje 469524)
si no recuerdo mal algo de eso ley hace años creo recordar que lo que hacia en el OnChange....

Gracias por tu ayuda. Imagino que el componente standard actuará de forma parecida.

De todos modos, me gustaría saber en que fichero fuente se encuentra el código que lo gestiona. Si algun miembro del foro puede indicarme, lo agradecería.

Un saludo

olbeup 12-11-2013 15:14:18

Dentro de tú formulario, pulsa al Ctrl + Click izquierdo del ratón en el TEdit y te llevará directo a la fuente.

Un salduo

Neftali [Germán.Estévez] 12-11-2013 15:56:59

Busca el código fuente de la clase TCustomEdit.

jocaro 15-11-2013 09:36:10

Gracias olbeup y Neftali por vuestra ayuda.

Mediante el atajo no he podido llegar a la fuente, pero he mirado el TCustomEdit, en el fuente Vcl.StdCtrls.pas, aunque no he conseguido ver el código donde controla el número máximo de caracteres.

Un saludo

ecfisa 15-11-2013 15:53:06

Cita:

Empezado por jocaro (Mensaje 469640)
Gracias olbeup y Neftali por vuestra ayuda.

Mediante el atajo no he podido llegar a la fuente, pero he mirado el TCustomEdit, en el fuente Vcl.StdCtrls.pas, aunque no he conseguido ver el código donde controla el número máximo de caracteres.

Un saludo

Hola jocaro.
Código Delphi [-]
...
procedure TCustomEdit.DoSetMaxLength(Value: Integer);
begin
  SendMessage(Handle, EM_LIMITTEXT, Value, 0)  // <<== Máximo de caracteres fijado: Value
end;
...
Acción que también podes ejecutar desde tu código, por ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Perform(EM_LIMITTEXT, 2, 0); 
end;
Aunque claro está que es mas simple usar la propiedad MaxLength...

Saludos :)

jocaro 18-11-2013 21:00:24

Gracias por tu ayuda ecfisa

La curiosidad por conocer el código que valida la longitud máxima de un TEdit me surgió porque utilicé un componente derivado de TEdit que sólo permite números y carácter de decimales (TNumEdit), que no valida correctamente el límite definido en la propiedad maxlength.

Abusando de tu amabilidad, :confused:si en el TEdit uso la propiedad maxlength ¿en que evento se validaría ésta?, ¿en que en que clase, en que método? ¿se podría ver el código que se utiliza en dicho método?.

Un saludo

ecfisa 18-11-2013 21:33:28

Hola jocaro.

Es que no es necesario que se valide, al enviar el mensaje EM_LIMITTEXT con 'n' caracteres a un edit control, el límite queda fijado mientras dura la vida del componente o se altere su valor mediante el envío de otro mensaje.

Saludos :)


La franja horaria es GMT +2. Ahora son las 13:14:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi