Страниц: [1]
  Печать  
Автор Тема: Странности PtNumericInteger  (Прочитано 3415 раз)
beaka
Участник
*
Offline Offline

Сообщений: 5


Просмотр профиля
« : Августа 01, 2005, 03:58:36 pm »

Приложение создается под Photon1.14 (qnx4.25). Для удобства пользователей хотелось бы сделать передвижение по полям при помощи табуляции (здесь все ОК), далее неплохо было бы подсветить поле на котором сейчас находится курсор, вот тут вот и встают проблемы с виджетом PtNumericInteger, если у него убрать флаг Pt_GETS_FOCUS, то табуляция проходит на отлично, но при этом естественно не отработывает колбэк на получение и потерю фокуса (для того чтобы подсветить поле). А вот если выставляем этот флаг, то при табуляции при попадениии на него фокуса он неизвестно где, а только после повторного нажатия на Tab попадает в числовое поле, ерунда какая-то. Флаг Pt_ARG_UPDOWN_FLAGS->Pt_GETS_FOCUS снят. Это я что-то не так делаю, а если так и должно быть, то как можно другим способом узнать кто потерял фокус, а кто его получил?
Записан
ililiv
Участник
*
Offline Offline

Сообщений: 5


Просмотр профиля
« Ответ #1 : Сентября 12, 2016, 12:16:05 pm »

Приветствую! Вряд ли автору вопроса еще интересен ответ (спустя 11 лет-то), но вдруг кому-то пригодится на просторах форума?
Странность поведения PtNumericInteger в том, что он составной. В него входят: PtText и PtUpDown, который еще и сам составной!
Фокус может забирать как сам виджет-контейнер PtNumericFloat, так и любой из его внутренних виджетов.
Чтобы разобраться у кого сейчас фокус, можно, например, по коллбаку уловить, что коллбак пришел от PtNumericInteger (например коллбак на обработчик клавиатуры или приход фокуса), а функция PtContainerFindFocus() считает иначе и гордо заявляет, что в фокусе какой-то неименованный PtText.
И так же можно вольготно проигнорировать сам виджет PtNumericInteger и, оставив на его любви к самоуправлению глубокий шрам, отдать фокус сразу PtText'у, что живет внутри (он, кстати, лежит гарантировано нижним, поэтому можно сразу отдавать функцией PtContainerGiveFocus(PtWidgetChildBack(widget),0) )
Я так понимаю, что строчка выше и есть ответ на вопрос: отдавайте по Tab фокус внутреннему виджету.

Ps. Прошу прощения если нарушил правила форматирования - первый раз писал ответ)
Записан
Страниц: [1]
  Печать  
 
Перейти в: