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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...