Перейти к содержанию
  • Регистрация
  • 0
Martifan

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

Вопрос

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

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

  • 0

Не очень понятно где именно вы видите 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 эмодзи.

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

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

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


  • Похожий контент

    • От Макс Войтенко
      var Keyboard: IFMXVirtualKeyboardService; begin if TPlatformServices.Current.SupportsPlatformService( IFMXVirtualKeyboardService, IInterface( Keyboard ) ) then if TVirtualKeyboardState.Visible in Keyboard.GetVirtualKeyBoardState then ShowMessage( 'клавиатура открыта' ) else ShowMessage( 'клавиатура скрыта' ); end; ТАК Я на шел для делфи. Но мне нужно для C++
    • От Barbanel
      Здравствуйте уважаемые,
      есть форма с множеством TEdit, при этом они не помещаются на один экран и помещена на TScrollBox.
      При скороллинге если скроллить нажимая на подложку (т.е. сам TScrollBox) все работает идеально, если же нажимать на сам TEdit и таким образом скроллить, то выезжает клавиатура, что вобщемто неудобно.
      Вопрос: как настроить приложение/форму/ТСкроллБокс так, чтобы при зажатии и движении пальца вверх/вниз на ТЕдите клавиатура не выезжала?
      На нативных приложениях описанного выше поведения я не замечал.
       
      Заранее спасибо!
       
    • От Features
      Добрый день.
      Есть весьма странная задача : разработать собственную клавиатуру для системы (а не чисто для своего приложения) (developer.android.com, пример реализации в Android Studio).
       Возможно ли средствами Firemonkey это реализовать, или придется делать обертки java классов и подключать их в проект?
      п.с. дабы не плодить темы, такая же задача стоит и для IOS (Реализация в XCode).
      Буду очень благодарен за помощь и наставление в нужное русло.)
    • От Ufomaster
      Как при переходе с эдита на эдит очистить предыдущий текст в клавиатуре, что бы он не попал в новый эдит при нажатии на любой символ? 
    • От Дениска
      на OnClose формы делаем так: 
        procedure TForm2.OnClose(Sender: TObject; var Action: TCloseAction); begin   Action := TCloseAction.caFree; end;   и освобождаем форму не Free, а DisposeOf:   Form2 := TForm2.Create(nil); Form2.ShowModal; Form2.DisposeOf;
    • От Dozent
      День добрый! Как вызвать клавиатуру при попадании фокуса в эдит, приложение под 8.1? Я кинул на форму эдит указал тип клавиатуры, запускаю проект, тыкаю на эдит но клавиатура не появляется....
    • От Tarik02
      Как конвертировать символ в виртуальный код клавиши для функции keybd_event на windows. Дело в том, что нужно конвертировать на android, так-как некоторые символы нужно передавать без конвертации.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

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