x11 Posted June 24, 2020 Posted June 24, 2020 1. Есть небольшое неудобство - виртуальная клавиатура появляется и скрывается очень быстро, в течение полсекунды, что вызывает неприятный визуальный эффект моргания экрана. На форме логина есть TUnimSelect для выбора пользователя, и TunimEdit для ввода пароля. Пользователь выбирает что-то в TUnimSelect и вводит пароль в TunimEdit. Под TunimEdit находится кнопка ОК. Чтобы нажать ОК, нужно скрыть клавиатуру, т.к. кнопка ОК не видна, пока клавиатура на экране. И так... пользователь ввел пароль, скрыл клавиатуру и нажимает ОК, при этом TunimEdit всё-таки находится в фокусе. Проблема в том, что когда закрывается форма логина и появляется главная форма приложения, то виртуальная клавиатура на полсекунды снова появляется и исчезает. Я добавил вот такой код в событие нажатия на кнопку ОК btnOK.WebFocus; edPass.ReadOnly := true; Всё равно это не помогло. Quote
Sherzod Posted June 24, 2020 Posted June 24, 2020 1 hour ago, x11 said: Всё равно это не помогло. Есть ли у Вас, небольшой тестовый случай для этого? Quote
x11 Posted June 24, 2020 Author Posted June 24, 2020 Да там всё просто. 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 Quote
Sherzod Posted June 24, 2020 Posted June 24, 2020 16 minutes ago, x11 said: Или сделайте так: введите что-то в UnimEdit1, потом скройте клавиатуру, а потом нажмите кнопку. А если попробовать такой подход? UnimButton1 -> function tap(sender, e, eOpts) { Ext.get(Ext.Element.getActiveElement()).blur(); } 1 Quote
x11 Posted October 15, 2020 Author Posted October 15, 2020 Похожий вопрос с 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. Quote
Sherzod Posted October 15, 2020 Posted October 15, 2020 12 minutes ago, x11 said: selCMD.JSInterface.JSAddListener('---', '---');// как скрыть клавиатуру? А если попробовать так?: selCMD.JSInterface.JSCode('Ext.get(Ext.Element.getActiveElement()).blur();'); 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.