Limitar a qntde de caracteres digitados por linha no TMemo
Como consigo limitar a qntde de caracteres digitados por linha no TMemo
Ex.:
Quero que permitar digitar somente 23 caracteres por linha.
Ficaria assim:
------------------
Fórum DevMedia - Delphi
Fórum DevMedia - Delphi
o que for ser digitado depois do ´Fórum DevMedia - Delphi´ não deixar
Grato
Bruno
Ex.:
Quero que permitar digitar somente 23 caracteres por linha.
Ficaria assim:
------------------
Fórum DevMedia - Delphi
Fórum DevMedia - Delphi
o que for ser digitado depois do ´Fórum DevMedia - Delphi´ não deixar
Grato
Bruno
Bfbraz
Curtidas 0
Respostas
Fábio Feltrin
02/05/2005
Altere o tamanho do TMemo para que nele caiba apenas 23 caracteres ja que o espaço restante vc não ira utilizar.
Att Fábio Feltrin da Silveira
Att Fábio Feltrin da Silveira
GOSTEI 0
Bfbraz
02/05/2005
Não posso simplesmente alterar o tamanho do Memo pois a qntde de caractares vai variar de Cliente, cada Cliete vai ter uam qtde diferente que podera digitar
Bruno Rodrigues
Bruno Rodrigues
GOSTEI 0
Rômulo Barros
02/05/2005
Deve haver um jeito mais simples. Mas, enquanto vc não acha a solução, implemente o código abaixo no evento OnKeyPress do seu Memo.
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char); Var C : Longint; begin With(Memo1)Do Begin For C := 0 To Lines.Count -1 Do Begin If(Not(Key In[8,13]))Then Begin If(Length(Lines[C]) > 23)Then Begin MessageDlg(´Limite de caracteres ultapassado !!!´,mtWarning,[mbOk],0); Key := 0; Break; End; End; End; End; end;
GOSTEI 0
Beppe
02/05/2005
Rômulo, não existe maneira mais simples do que a sua solução, sem restrições. Até seria possível testar qual linha foi modificada com Memo1.CaretPos.y, e verificar a largura desta linha. Porém, se for possível Copiar&Colar, daí somente a tua rotina dá jeito. Mas poderia ser proibido o ´Ctrl+V´, então testar apenas a linha atual é viável.
GOSTEI 0
Rômulo Barros
02/05/2005
Sim, eu tentei testar apenas a linha atual, mas não consegui achar um comando para isso, tipo ( Memo.Lines[Memo.ItemIndex] ) ... ... mas, conforme descrito por você anteriormente, Beep, basta implementar o método [b:3855815b75]CaretPos.y[/b:3855815b75] e adequar o código para o sistema.
[color=blue:3855815b75][i:3855815b75][u:3855815b75]Valeu !!![/u:3855815b75][/i:3855815b75][/color:3855815b75]
[color=blue:3855815b75][i:3855815b75][u:3855815b75]Valeu !!![/u:3855815b75][/i:3855815b75][/color:3855815b75]
GOSTEI 0
Antseralves
02/05/2005
Teste o seguinte:
No formulário onde está o TMemo faça a propriedade
[b:f934334362]KeyPreview[/b:f934334362] = [b:f934334362]true[/b:f934334362].
No evendo [b:f934334362]OnKeyPress[/b:f934334362] do TMemo codifique:
if Length(Memo1.Lines.Strings[Memo1.CaretPos.Y]) = 33 then
if Key >= ´0´ then
Key := #0;
Boa sorte !
AntSer
=====
No formulário onde está o TMemo faça a propriedade
[b:f934334362]KeyPreview[/b:f934334362] = [b:f934334362]true[/b:f934334362].
No evendo [b:f934334362]OnKeyPress[/b:f934334362] do TMemo codifique:
if Length(Memo1.Lines.Strings[Memo1.CaretPos.Y]) = 33 then
if Key >= ´0´ then
Key := #0;
Boa sorte !
AntSer
=====
GOSTEI 0