OberonCore https://forum.oberoncore.ru/ |
|
Програмная передача фокуса https://forum.oberoncore.ru/viewtopic.php?f=29&t=6855 |
Страница 1 из 1 |
Автор: | Александр К [ Вторник, 17 Май, 2022 20:21 ] |
Заголовок сообщения: | Програмная передача фокуса |
На форме имеются два текстовых поля ввода. Как после ввода одного знака в первое поле передать фокус во второе поле не кликая по нему мышкой? |
Автор: | Иван Денисов [ Вторник, 17 Май, 2022 21:48 ] | |||
Заголовок сообщения: | Re: Програмная передача фокуса | |||
Получился пример, который работает, когда форма открыта как внутренний (Aux) диалог. Запускается уведомитель, получает контроллер контейнеров, проходит по видам контейнера в поисках нужного поля и его выделяет. Код: MODULE TestFocusChange;
IMPORT Containers, Controls, Views, Dialog; VAR str1*, str2*: ARRAY 16 OF CHAR; PROCEDURE Notifier* (op, from, to: INTEGER); VAR c: Containers.Controller; v: Views.View; done: BOOLEAN; BEGIN IF op = Dialog.changed THEN c := Containers.Focus(); IF c # NIL THEN c.GetFirstView(Containers.any, v); done := FALSE; WHILE (v # NIL) & ~ done DO WITH v: Controls.Control DO IF v.prop.link = "TestFocusChange.str2" THEN c.SelectAll(FALSE); (* убрать выделения *) c.SetFocus(v); (* сделать вид фокусным *) done := TRUE END ELSE END; c.GetNextView(Containers.any, v) END END END END Notifier; END TestFocusChange. "StdCmds.OpenAuxDialog('Test/Rsrc/FocusChange.odc','test')"
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |