PDA

Ver la Versión Completa : Numero de caracteres limitado por linea en un TMemo


RoyTan
15-07-2013, 19:57:11
Saludos, mi pregunta es si es posible limitar el número de caracteres por linea en un Memo.

La propiedad MaxLength solo lo limita en forma global no por linea y así no me vale.

Por ejemplo seria posible hacer esto.

1234567890
1234567890
1234567890
y así sucesivamente.

nunca colocar mas de diez caracteres por linea sean numeros o letras.

Gracias.

nlsgarcia
15-07-2013, 21:18:30
RoyTan,


...es posible limitar el número de caracteres por línea en un Memo...


Revisa este código:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Memo1: TMemo;
procedure OnKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.OnKeyPress(Sender: TObject; var Key: Char);
var
Line,Column : Integer;

begin

With Memo1 do
begin
Line := Perform(EM_LINEFROMCHAR,SelStart, 0);
Column := SelStart - Perform(EM_LINEINDEX, Line, 0);
if (Column >= 10) and (Key <> #8) and (Key <> #13) then
Key := #0;
end;

end;

end.

El código anterior limita cada línea de un control TMemo a 10 carácteres por medio del evento OnKeyPress y el método Perform.

Espero sea útil :)

Nelson.

RoyTan
15-07-2013, 21:53:29
Gracias Nelson.

Es precisamente lo que queria, funciona perfecto.

Un saludo y muchas gracias.