Перевод каретки на новую строку с учетом количества символов табуляции в предыдущей строке

Рейтинг: 1Ответов: 1Опубликовано: 29.12.2014
if (Key=VK_RETURN) then
begin
  Memo1.SetFocus;
  keybd_event(8, 0, 0, 0);
  Memo1.SetSelTextBuf(#13#10);

  if Pos(#9#9#9,Memo1.Lines[Memo1.CaretPos.Y-1])=1 then
    Memo1.SetSelTextBuf(#9#9#9)
  else
    if Pos(#9#9,Memo1.Lines[Memo1.CaretPos.Y-1])=1 then
      Memo1.SetSelTextBuf(#9#9)
    else
      if Pos(#9,Memo1.Lines[Memo1.CaretPos.Y-1])=1 then
        Memo1.SetSelTextBuf(#9)
end;

Задача выполнена следующим образом.

Ответы

▲ 1Принят

правильнее будет так:

if (Key=VK_RETURN) then
begin
  Memo1.SetFocus;
  keybd_event(8, 0, 0, 0);
  Memo1.SetSelTextBuf(#13#10);

  if Pos(#9#9#9,Memo1.Text)=1 then
    Memo1.SetSelTextBuf(#9#9#9) 
  else
    if Pos(#9#9,Memo1.Text)=1 then
      Memo1.SetSelTextBuf(#9#9) 
    else
      if Pos(#9,Memo1.Text)=1 then
        Memo1.SetSelTextBuf(#9)
end;