我需要在TMemo组件中按行限制行数和字符数。
示例a我喜欢这样做:
Memo1.MaxLines:=20;
Memo1.CharsByLine:=80;
我怎样才能在delphi中做到这一点?
答案 0 :(得分:1)
我不相信有一种简单的方法可以做到这一点,我在尝试限制它之前设置了一个OnKeyPress事件(我不知道它是否处理文本中的粘贴)
procedure AddressMemoOnKeyPressEvent(Sender: TObject; var Key: Char);
var
i, lineCount: Integer;
begin
with Sender as TMemo do
begin
if (Key <> #13) and (Key <> #8) and (Length(Lines[CaretPos.Y]) >= MAX_CHARS_PER_LINE_IN_MEMO) then
Key := #0;
lineCount := 0;
for i := 1 to Length(TMemo(Sender).Lines.Text) do
begin
if (TMemo(Sender).Lines.Text[i] = #13) then
Inc(lineCount);
end;
if (Key = #13) AND (Key <> #8) AND (lineCount >= MAX_LINES_PER_MEMO - 1) then
Key := #0;
// if we got past the last line, no key can be entered...
if (CaretPos.Y >= MAX_LINES_PER_MEMO) then
Key := #0;
end;
end;
答案 1 :(得分:1)
有一些不明显的问题......比如如果你用一大块文本分配memo1.lines.text值会发生什么?您是否希望发生错误,将数据强制降至80个字符/行...
听起来你需要一个文字处理器控制而不是TMemo。查看http://www.TRichView.com或http://www.wpcubed.com/