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

TEdit не понятное удаление последнего символа


YuraProff

Вопрос

Android,

Berlin

В поле TEdit 5 символов, делаем Tap по последнему символу, курсор стает за последним символом, нажимаем BackSpace и все поле очищается. Можно как то сделать что бы последний символ удалялся а не все символы в поле?

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

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

  • 0
2 часа назад, POV сказал:

Эээ, а текст не оказывается выделенным из-за чего, собссно, и был далее удалён?

Визуально выделения нету. Это воспроизводится даже на простом проекте в который добавлен только один TEdit без каких либо обработчиков. За все устройства говорить не могу, но точно на Samsung, Mizu.

Ссылка на комментарий
  • 2
  • Модераторы

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

Это баг, я сообщил о нём ещё в мае (RSP-14928 и RSP-14929), в тех. поддержке предложили временное решение (ответ ниже). (Тема В TEdit стирается предыдущий текст аналогичная).

find FMX.Platform.Android.pas

find
procedure TTextServiceAndroid.SetCaretPosition(const Value: TPoint);

change code to:
procedure TTextServiceAndroid.SetCaretPosition(const Value: TPoint);
var
  SelStart, SelEnd: Integer;
begin
  if FCaretPosition <> Value then
  begin
    FCaretPosition := Value;
    CalculateSelectionBounds(SelStart, SelEnd);
    if (FTextView <> nil) and not FInternalUpdate then
      PlatformAndroid.SynchronizeOnUIThread(
        procedure
        begin
//Fix By [龟山]Aone(1467948783)
//https://quality.embarcadero.com/browse/RSP-14928
//          if (SelEnd - SelStart) > 0 then
//            FTextView.setSelection(SelStart, SelEnd)
//          else
            FTextView.setCursorPosition(CaretPosition.X);
        end);
  end;
end;

 

 

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

У меня планшет Samsung Galaxy T285. Такой проблемы не обнаруживается в Берлине.
Создал обычный Android проект. Положил TEdit. Задал ему некий тест. Запускаю на устройстве. Перехожу за последний символ, нажимаю BackSpace и стирается только последний символ, а не весь текст

Ссылка на комментарий
  • 1
В 23.08.2016 в 14:17, dmitry сказал:

У меня планшет Samsung Galaxy T285. Такой проблемы не обнаруживается в Берлине.
Создал обычный Android проект. Положил TEdit. Задал ему некий тест. Запускаю на устройстве. Перехожу за последний символ, нажимаю BackSpace и стирается только последний символ, а не весь текст

Попробуйте поставить два Edit-а и переходите с одного на другой и попробуйте удалить последний символ.

 

В 23.08.2016 в 13:54, Andrey Efimov сказал:

Это баг, я сообщил о нём ещё в мае (RSP-14928 и RSP-14929), в тех. поддержке предложили временное решение (ответ ниже)

Спасибо, решение сработало.

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

10.1 upd2 Berlin Указанный способ не сработал.

Вышел из положения так: 

procedure TForm1.Edit6Click(Sender: TObject);
var
  selcol, selst: Integer;
begin  
  selst := Edit6.SelStart; //запонинаем куда кликнули курсором
  if Edit6.Text <> '' then  
  begin
    Edit6.SelectAll;  //выделяем всю строку
    selcol := Edit6.SelLength;//узнаем сколько символов в строке
    Edit6.SelStart := selcol - 1; //ставим курсор в любое место чтобы снять выделение и в помощьнике клавиатуры появились подсказки
    Edit6.SelStart := selst; //и возвращаем каретку на место куда изначально было кликнуто
  end;
end;

Только есть минус:по удержанию пальца текст не получиться выделить. 

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

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

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

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

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

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

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

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

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

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