Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как орграничить число вводимых символов в одну строку Memo?


Axx ©   (2012-01-28 09:46:00) 

Подскажите, пожалуйста, как заблокировать возможность набирать более 7 символов в одной строке Memo? при вводе последнего (седьмого) символа добавлять новую строку.


oldman   (2012-01-31 14:28:00) [1]


> при вводе последнего (седьмого) символа добавлять новую
> строку.


Ввел я семь символов. Мемо перевел строку. Ввел я еще 5, потом поднялся на строку выше и удалил один символ. Или добавил восьмой. Мемо свихнется...


Dimka Maslov   (2012-01-30 14:40:00) [2]


> И через Ctrl+V


Никто не запрещает перехватывать соотв. сообщение. А вообще решение - разработка доп. компонента с нужным функционалом, можно даже на основе TMemo.


И. Павел   (2012-01-30 11:21:00) [3]

> [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;


Омлет   (2012-01-28 13:08:00) [4]

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо