Как отловить переход на новую строку, осуществляемый автоматически при наборе текста?

Рейтинг: 0Ответов: 1Опубликовано: 29.12.2014

Т.е. без нажатия на клавишу enter.

procedure TForm1.Memo1Change(Sender: TObject);
var
  strok1:Integer;
begin
strok1:=Memo1.Lines.Count;
if strok1 > 1 then
Memo1.SetSelTextBuf('*');
end;

Получаю * после каждого введенного символа.

Ответы

▲ 2Принят

В OnChange сохранять и проверять Memo1.Lines.Count (про Memo ведь речь?).

UPD

Чтобы проверить изменение, надо где-то сохранить предыдущее значение. Проверить вы проверили, а сохранять не сохраняете.

TForm1 = ...

  Memo1LineCount: Integer;
end;

procedure TForm1.Form1Create(Sender: TObject);
begin
  Memo1LineCount:=0;
  Memo1.Text:='';
end;

procedure TForm1.Memo1OnChange(Sender: TObject);
begin
  if Memo1.Lines.Count>Memo1LineCount then
  begin
    ShowMessage('Сработал перенос строки');
    Memo1LineCount:=Memo1.Lines.Count;
  end;
end;

ЗЫ Вы воспринимаете советы буквально. С готовыми ответами завязываю.