Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-12-2005
pepecharlie67 pepecharlie67 is offline
Miembro
 
Registrado: nov 2005
Posts: 48
Poder: 0
pepecharlie67 Va por buen camino
Establecer numero maximo lineas RichEdit o Memo

Hola me gustaria saber como establecer un numero maximo de lineas a un richedit o un memo.Es decir,quiero que el numero maximo de lineas sean 3 y no sobrepase de ahi.Gracias
Responder Con Cita
  #2  
Antiguo 26-12-2005
pepecharlie67 pepecharlie67 is offline
Miembro
 
Registrado: nov 2005
Posts: 48
Poder: 0
pepecharlie67 Va por buen camino
Ya va.Ya esta hecho.
Responder Con Cita
  #3  
Antiguo 26-12-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos
Cita:
Empezado por pepecharlie67
Ya va.Ya esta hecho.
Explicanos cómo, para los futuros foristas que tengan la misma duda.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #4  
Antiguo 26-12-2005
pepecharlie67 pepecharlie67 is offline
Miembro
 
Registrado: nov 2005
Posts: 48
Poder: 0
pepecharlie67 Va por buen camino
Pues lo que hecho ha sido un poco chapuza pero bueno,en mi caso me vale mas que de sobra.A ver,yo simplemente he contado el numero de letras que me cabe en una linea,por ejemplo 30.Pues si quieres tres lineas,es simplemente multiplicar por 3.Osea que en el campo MaxLength del richedit simplemente deberiamos poner 90.
Responder Con Cita
  #5  
Antiguo 27-12-2005
Avatar de Ohcan
[Ohcan] Ohcan is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: Madrid (España)
Posts: 119
Poder: 20
Ohcan Va por buen camino
Bueno...
A mí se me ocurre:
Código Delphi [-]
 //En el evento OnChange (da igual para Memo que para RichEdit)
 procedure TForm1.Memo1Change(Sender: TObject);
 begin
   if memo1.Lines.Count > 9 then ShowMessage('No se pueden añadir más líneas');
 end;
sustituyendo el 9 por el número/variable/constante que prefieras.
y el showmessage por algo que borre las lineas que sobran (Memo.Lines.Delete(I)
Saludos
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin)

Última edición por Ohcan fecha: 27-12-2005 a las 11:04:12.
Responder Con Cita
  #6  
Antiguo 27-12-2005
Avatar de Ohcan
[Ohcan] Ohcan is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: Madrid (España)
Posts: 119
Poder: 20
Ohcan Va por buen camino
Lightbulb OnKeyUp

No me quedé nada a gusto con el post anterior...
Así que mejor sería, quizás, esto:
Código Delphi [-]
procedure TForm1.ElMemoKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  MaxLines:Integer;
begin
  MaxLines := 2;
  while ElMemo.Lines.Count > MaxLines do
    ElMemo.Lines.Delete(ElMemo.Lines.Count-1);
end;
MaxLines lo he definido allí mismo... pero sería mejor que fuera una constante ...
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin)

Última edición por Ohcan fecha: 27-12-2005 a las 12:32:36. Razón: Retocar código
Responder Con Cita
  #7  
Antiguo 27-12-2005
Avatar de Ohcan
[Ohcan] Ohcan is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: Madrid (España)
Posts: 119
Poder: 20
Ohcan Va por buen camino
Y si esto va a ser para todos los TMemo....
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type

  TMemo = class(StdCtrls.TMemo)

  private
    FMaxLines:Integer;
    FOnKeyUp: TKeyEvent;
    procedure WMKeyUp(var Message: TWMKeyUp); message WM_KEYUP;
    procedure SetMaxLines(Value:Integer);
  protected
    property OnKeyUp: TKeyEvent read FOnKeyUp write FOnKeyUp;
  public
    property MaxLines:Integer read FMaxLines Write SetMaxLines default 0;
  end;

  TForm1 = class(TForm)
    ElMemo: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TMemo }

procedure TMemo.SetMaxLines(Value: Integer);
begin
  if Value<>FMaxLines then
    if Value<0 then
      raise Exception.Create('A MaxLines no se le pueden asignar valores menores de cero(0).')
    else
      FMaxLines := Value;
end;

procedure TMemo.WMKeyUp(var Message: TWMKeyUp);
begin
  if FMaxLines<>0 then
    while Lines.Count > FMaxLines do
      Lines.Delete(Lines.Count-1);
end;

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  ElMemo.MaxLines := 3;
end;

end.
Crea una palicación desde cero... pon un memo en el formulario (llámalo ElMemo) y sustituye el código de la Unit1 por el que está aquí arriba.
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin)
Responder Con Cita
  #8  
Antiguo 13-01-2006
pepecharlie67 pepecharlie67 is offline
Miembro
 
Registrado: nov 2005
Posts: 48
Poder: 0
pepecharlie67 Va por buen camino
No me funciona bien la solucion propuesta.Muchas gracias de todas formas.A ver si me pueden decir una solucion alternativa.Gracias
Responder Con Cita
  #9  
Antiguo 13-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues hombre, yo creo que deberías empezar por explicarnos porqué no te funciona bien. A primera vista, la solución de Ohcan parece cumplir lo esperado.

// Saludos
Responder Con Cita
  #10  
Antiguo 05-04-2006
JOSEA JOSEA is offline
Miembro
 
Registrado: may 2004
Posts: 12
Poder: 0
JOSEA Va por buen camino
La función de ohcan, de lujo, pero si además quieres que funcione parecido a un Tedit (o sea si escribes al principio del Tmemo que no borre la ultima línea entera, se me ocurre esta solución
Código:
procedure TForm1.memoKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if memo.lines.count >3 then begin
    keybd_event(vk_back, 0, 0, 0);
    keybd_event(vk_back, 0, KEYEVENTF_KEYUP, 0);
  end;
end;
Hace un efectillo raro pero funciona (incluso si pulsas un enter)
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:06:07.


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