Форум: "Начинающим";
Текущий архив: 2012.06.03;
Скачать: [xml.tar.bz2];
ВнизКак орграничить число вводимых символов в одну строку Memo? Найти похожие ветки
← →
Axx (2012-01-28 09:46) [0]Подскажите, пожалуйста, как заблокировать возможность набирать более 7 символов в одной строке Memo? при вводе последнего (седьмого) символа добавлять новую строку.
← →
Омлет © (2012-01-28 13:08) [1]
procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if length(Memo1.Lines[CaretPos.Y]) >= 7 then
Memo1.Lines.Insert(CaretPos.Y + 1, "");
end;
← →
И. Павел © (2012-01-30 11:21) [2]> [1] Омлет © (28.01.12 13:08)
Так все равно пользователь сможет ввести. И через Ctrl+V и просто долго держа нажатой одну клавишу.
Лучше что-то типа такого:procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var i: integer;
s: string;
begin
i := 0;
while (Memo1.Lines.Count — 1 >= i) do
begin
if length(Memo1.Lines[i]) > 7 then
begin
s := Memo1.Lines[i];
Memo1.Lines.Delete(i);
while length(s) >= 7 do
begin
Memo1.Lines.Insert(i, Copy(s, 1, 7));
Delete(s, 1, 7);
inc(i);
end;
if length(s) > 0 then Memo1.Lines.Insert(i, s);
end;
inc(i);
end;
end;
← →
Dimka Maslov © (2012-01-30 14:40) [3]
> И через Ctrl+V
Никто не запрещает перехватывать соотв. сообщение. А вообще решение - разработка доп. компонента с нужным функционалом, можно даже на основе TMemo.
← →
oldman © (2012-01-31 14:28) [4]
> при вводе последнего (седьмого) символа добавлять новую
> строку.
Ввел я семь символов. Мемо перевел строку. Ввел я еще 5, потом поднялся на строку выше и удалил один символ. Или добавил восьмой. Мемо свихнется...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.06.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c