Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Memo limitado. (https://www.clubdelphi.com/foros/showthread.php?t=4239)

ALMERA 07-10-2003 11:16:25

Memo limitado.
 
Hola amigos del foro, me gustaria saber como poder limitar un memo al número de lineas que yo quiera por ejemplo tres.
¿como limito un memo a solo 3 lineas?.

Muchas Gracias.

__cadetill 07-10-2003 12:08:09

Puedes probar algo así

Código:

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if Memo1.Lines.Count > 1 then
    Key := #0;
end;


delphi.com.ar 07-10-2003 16:23:22

La respuesta del amigo cadetill, si bien es sencilla, fallará si el usuario utiliza el clipboard. En este caso tendrías que trabajar con el mensaje WM_PASTE y quitar los CR y/o LF de lo que se va a pegar.

Saludos!

ALMERA 07-10-2003 18:57:34

Me parece muy bien la idea, pero tiene una pega:
cuando se pulsa la tecla del caracter que pasa a la cuarta linea (donde no queremos que escriba) el contador de lineas vale 3, por lo que un caracter entra siempre en la linea no deseada, todavia peor si lleno las tres lineas y en la segunda escribo algo que esto:

"sfggsdfgsdfgsdfgfdsgsfdgsfdgfdsgsfdgfd
sddfgdfsgdffdgdsfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ff
fdsfgfdgfdsgfdgfdsgdfgfdsgdfsgfffdssfdgfdfffdfdfdfdñññ"

roman 07-10-2003 20:01:33

Cita:

Posteado originalmente por ALMERA
cuando se pulsa la tecla del caracter que pasa a la cuarta linea (donde no queremos que escriba) el contador de lineas vale 3, por lo que un caracter entra siempre en la linea no deseada, todavia peor si lleno las tres lineas y en la segunda escribo algo que esto:

"sfggsdfgsdfgsdfgfdsgsfdgsfdgfdsgsfdgfd
sddfgdfsgdffdgdsfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ff
fdsfgfdgfdsgfdgfdsgdfgfdsgdfsgfffdssfdgfdfffdfdfdfdñññ"

Es posible que esto tenga que ver con la opción WordWrap del Memo. Quizá en lugar de liarte con el número de líneas, mensajes WM_PASTE, etc., te convenga usar la propiedad MaxLength del Memo para limitar el número de caracteres que se pueden introducir en el Memo.

Si, por ejemplo, quieres líneas de aproximadamente 20 caracteres entonces pon MaxLength en 60 y el usuario no podrá escribir más de 60 caracters (= 3 líneas de texto).

// Saludos

ALMERA 07-10-2003 20:20:02

eso ya lo habia pensado, pero si no controlo el número de lineas, con 60 caracteres se pueden hacer 60 lineas,
ponemos un ejemplo de 6 lineas

1111111111
2222222222
3333333333
4444444444
5555555555
6666666666

ahora con esta información hago un informe donde solo caben 3 lineas, entonces la cagaste burlancaster.

Julià T. 08-10-2003 00:55:32

hola a todos
puedes colocar un código parecido a:


Cita:

procedure TForm1.Memo1Change(Sender: TObject);
begin
While Memo1.Lines.Count>3 do
Memo1.Lines.Delete(Memo1.Lines.Count-1);
end;
con lo que borrarás cualquier linea que se intente poner a partir de la tercera

ALMERA 08-10-2003 02:00:48

MUCHAS GRACIAS JULIA.
ME HA SIDO DE GRAN AYUDA TU CONSEJO.


La franja horaria es GMT +2. Ahora son las 23:17:06.

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