Перейти к содержанию
Fire Monkey от А до Я
  • 0

Проблема авто-скрола в TMemo


Alexander616

Вопрос

Доброго времени суток.
У меня возникли проблемы с TMemo, пытаюсь сделать что-то наподобие поля ввода в чате.
При переходе на новую строку и при авто-переносе текста (wordwrap), поле должно автоматически регулировать высоту, но до определённого размера.
Для этого на событие "ChangeTracking" добавил контроль :

procedure TfMain.MemoSendTextChangeTracking(Sender: TObject);
const
  Offset = 20;
begin
  MemoSendText.ScrollTo(MemoSendText.Caret.Pos.X, MemoSendText.Caret.Pos.Y, True);

  if LayoutSendBox.Height < 100 then
    LayoutSendBox.Height := MemoSendText.ContentBounds.Height + Offset;
end;

"LayoutSendBox" - представляет собой контейнер, в котором находится само поле, у которого в параметре Align указанно "Client", то-есть при изменении высоты контейнера соответственно меняется высота самого поля. Функция Wordwrap у поля - включена, как и ShowScrollBars, т.е. если поле растягивается больше допустимого размера, появляется скрол бар и при дальнейшем вводе текста поле скролится вниз, при помощи процедуры "ScrollTo"

Проблема состоит в следующем: 
После того как поле TMemo достигает своего максимального размера и начинает опускаться вниз при продолжении ввода текста, скрол бар начинает прыгать после введения каждого символа, т.е. после ввода первого символа поднимается наверх на пару пикселей, так, что нижней части последней строчки становится не видно (хотя если проскролить поле вниз, нижняя часть отображается), а при вводе следующего символа всё становится на место. 

Может кто-нибудь подсказать в чём проблема? 
 

Ссылка на комментарий

Рекомендуемые сообщения

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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

×
×
  • Создать...