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 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
  #2  
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
  #3  
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
  #4  
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
  #5  
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 22:39:47.


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