Jump to content

Проблема со скрытием виртуальной клавиатуры


x11

Recommended Posts

1. Есть небольшое неудобство - виртуальная клавиатура появляется и скрывается очень быстро, в течение полсекунды, что вызывает неприятный визуальный эффект моргания экрана.

На форме логина есть TUnimSelect для выбора пользователя, и TunimEdit для ввода пароля. Пользователь выбирает что-то в TUnimSelect и вводит пароль в TunimEdit. Под TunimEdit находится кнопка ОК. Чтобы нажать ОК, нужно скрыть клавиатуру, т.к. кнопка ОК не видна, пока клавиатура на экране.

И так... пользователь ввел пароль, скрыл клавиатуру и нажимает ОК, при этом TunimEdit всё-таки находится в фокусе.

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

 

Я добавил вот такой код в событие нажатия на кнопку ОК

      btnOK.WebFocus;
      edPass.ReadOnly := true;

Всё равно это не помогло.

 

Link to comment
Share on other sites

Да там всё просто.

1. При старте формы логина будет сфокусирован элемент ввода пароля, но при этом клавиатура видна не будет:

procedure TUnimLoginForm2.UnimLoginFormCreate(Sender: TObject);
begin
  UnimEdit1.SetFocus;
end;

 

2. Сразу после закрытия формы логина на главной форме появится на короткие промежуток времени виртуальная клавиатура.

procedure TUnimLoginForm2.UnimButton1Click(Sender: TObject);
begin
  UnimEdit1.ReadOnly := True;
  ModalResult := mrOK;
end;

Просто запустите, не надо ничего вводить, нажмите на кнопку UnimButton1.

Или сделайте так: введите что-то в UnimEdit1, потом скройте клавиатуру, а потом нажмите кнопку.

UniGUI_Touch_Scroll.zip

Link to comment
Share on other sites

16 minutes ago, x11 said:

Или сделайте так: введите что-то в UnimEdit1, потом скройте клавиатуру, а потом нажмите кнопку.

А если попробовать такой подход?

UnimButton1 ->

function tap(sender, e, eOpts)
{
    Ext.get(Ext.Element.getActiveElement()).blur();
}

 

  • Like 1
Link to comment
Share on other sites

  • 3 months later...

Похожий вопрос с TUnimDBLookupComboBox.

Пользователь что-то набирает в строке и выбирает. Но после выбора значения в unimDBLookupComboBox, не закрывается виртуальная клавиатура смартфона.


 

procedure TfmmMain.selCMDGetKeyValue(const Value: string; var KeyValue: Variant);
begin
  
    if Value = ... then
    begin
      что-то делаем
      selCMD.Text := '';// очищаем строку ввода
      selCMD.JSInterface.JSAddListener('---', '---');// как скрыть клавиатуру?

    end;
end;

что прописать вместо --- ?

Спасибо.

 

P.S. в OnKeyValue так и не добавили параметр sender.

Link to comment
Share on other sites

12 minutes ago, x11 said:

selCMD.JSInterface.JSAddListener('---', '---');// как скрыть клавиатуру?

А если попробовать так?:

selCMD.JSInterface.JSCode('Ext.get(Ext.Element.getActiveElement()).blur();');

 

  • Like 1
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...