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

TMemo. Не отображается курсор при изменении размера


Servantik

Вопрос

Delphi Rio.
На пустую форму небольшого размера кладу TabSheet с одной страницей, выровненный alTop. На TabSheet кладу TMemo, также выровненное alTop. При создании формы ставлю Memo1.WordWrap := true;
При максимизации формы ширина зоны, в которой показывается курсор, остается неизменной, несмотря на то, что ширина 
TMemo увеличивается. Как это побороть?

Test1.7z

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

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

  • 0

Большое спасибо!  Очень интересно. Но что делать, если событие FormResize не порождается?
Например, TabSheet имеет Align = alNone и его ширина увеличивается при нажатии на кнопку? Я пробовал вставить вашу магию в события Resize TabSheet и Memo, но она не сработала.

Test1.7z

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

Спасибо! Но при перекидке WordWrap туда и обратно исчезает курсор. Если сделать SetFocus, то он показывается на 0й позиции Memo. Хотя CaretPosition остается неизменной (той, которая была до клика на кнопку). С этим можно отбороться?  

procedure TForm1.Button1Click(Sender: TObject);
var cpO: TCaretPosition;
begin
  TabControl1.Width := TabControl1.Width+200;
  cpO := Memo1.CaretPosition;
  Memo1.WordWrap := false;
  Memo1.WordWrap := true;
  Memo1.SetFocus;
  Memo1.CaretPosition := cpO;
end;

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

Она равна 0, если курсор не был внутри TMemo.
Сначала нажмите Button2 (чтобы выставить курсор в TMemo на не0ю позицию, например, 70). Потом Button1, чтобы получить глюк. Прилагаю проект.

Test1.7z

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

Для варианта с кнопкой могу еще предложить Memo1.Width := Memo1.Width+1 - реально размер не изменится (Memo.Align=Top), но все что надо оно сделает...

К сожалению в реальном приложении никакой кнопки не будет...  и скорее всего надо будет что то делать в событиях OnResize или OnResized формы или Memo... а там ничего что было предложено выше не работает...

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

Спасибо! Мне такое тоже в голову не пришло (:.
Да. Конечно же, в реальном приложении не будет кнопок, и нужно будет перехватывать все возможные изменения размера, чтобы вызывать "костыли". Но это все равно лучше, чем ничего.

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

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

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

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

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

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

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

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

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

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