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

как очистить память клавиатуры


Martifan

Вопрос

Здравствуйте

У меня есть один TMemo в форме. Некоторый текст написан пользователем в нем. Есть кнопка стереть. Когда эта кнопка нажата, введенные данные обрабатываются и текст очищается с использованием следующего кода:

EditBox.Lines.Clear;
EditBox.Text: = EmptyStr;

Когда приложение работает на устройстве, оно заметно удаляет текст после нажатия этой кнопки стереть. Однако, когда вы начинаете печатать снова, вы печатаете поверх старого текста. 

Например: 
1- Исходный текст набран "123". 
2- Нажата кнопка стереть. 
3- Наблюдается, что редактирование содержимого визуально очищается. Текст не отображается. 
4- Если вы наберете «456» в этом пустом редактировании, и после завершения ввода вы получите «123456» в самом редактировании. 

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

как можно очистить память клавиатуры после удаление текста?

заранее всем спасибо!

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

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

  • 0
52 минуты назад, Евгений Корепов сказал:

Не очень понятно где именно вы видите 123456, в самом контроле или в помощнике клавиатуры? 

в контроле то есть когда удаляю 123 с помощью кнопки, контролер очищается, но когда хочу написать 456 автоматом впереди добавляется 123 и получается 123456

Изменено пользователем Martifan
Ссылка на комментарий
  • 0
50 минут назад, Martifan сказал:

в контроле то есть когда удаляю 123 с помощью кнопки, контролер очищается, но когда хочу написать 456 автоматом впереди добавляется 123 и получается 123456

Сделал тестовое приложение (чистый андроид 9, Rio), но не удалось воспроизвести такое поведение.

Закиньте проект в котором глюк воспроизводится.

Ссылка на комментарий
  • 0
24 минуты назад, Евгений Корепов сказал:

Сделал тестовое приложение (чистый андроид 9, Rio), но не удалось воспроизвести такое поведение.

Закиньте проект в котором глюк воспроизводится.

на кнопке параметре стоит CanFocus = False

Project.rar

Изменено пользователем Martifan
Ссылка на комментарий
  • 0

Ага, теперь нормально воспроизводится.

Самый простой способ избежать этого, вот такой:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Text:=EmptyStr;
  Memo1.ResetFocus;
  Memo1.SetFocus;
end;

Правда будет видно что виртуальная клавиатура исчезает, а затем опять появляется. 

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

Нашел еще более изящный способ, без исчезновения/показа клавиатуры:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.SelectAll;
  Memo1.DeleteSelection;
end;

 

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

Пытался понять как работает  TClearEditButton у  TEdit - она очищает клавиатуру нормально. Но понять и адаптировать к TMemo не смог ))))
 

Ссылка на комментарий
  • 0
5 часов назад, Евгений Корепов сказал:

Нашел еще более изящный способ, без исчезновения/показа клавиатуры:


procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.SelectAll;
  Memo1.DeleteSelection;
end;

 

Спасибо большое добрый человек действительно работает :)

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

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

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

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

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

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

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

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

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

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