Страниц: [1]
  Печать  
Автор Тема: Функция, проверяюшая на наличие виджета с данным именем  (Прочитано 3271 раз)
talruns
Участник
*
Offline Offline

Сообщений: 38


Просмотр профиля
« : Сентября 24, 2015, 04:58:57 pm »

Очень сложно объяснить всю задачу.
у меня масса модальных окон, и общий для всех обработчик нажатия клавиш.
мне нужно при добавлении информации в этом обработчике понять, в какой, в данный момент PtList я чего-то вывожу.

Свела все к вопросу - если такой то лист существует - значит туда.

Есть ли такая функция, которая (не вылетая) позволит перебрать имена виджетов и понять, кто именно на этой форме "живой"?

Надеюсь понятно спросила...
Записан
deadarcher
Jr. Member
**
Offline Offline

Сообщений: 70



Просмотр профиля
« Ответ #1 : Сентября 24, 2015, 05:19:13 pm »

Если находитесь в самом обработчике нажатия клавиш, то в самом каллбэке есть PtWidget_t*, который можно сравнить с теми именами, которые генерит билдер типа ABW_Okno1_List1.
А если создано несколько копий одного окна/диалога - тут не скажу, так не делаю.


Записан
PoP
Sr. Member
****
Offline Offline

Сообщений: 336


Просмотр профиля
« Ответ #2 : Сентября 24, 2015, 06:28:14 pm »

В любом виджете есть дополнительное поле - чтото типа userdata или както так. Оно полностью  ваше. Определено как указатель. Можете записать туда адрес данных, связанных с конкретной копией виджета или какой нибудь идентификатор для обработчика.
Записан
talruns
Участник
*
Offline Offline

Сообщений: 38


Просмотр профиля
« Ответ #3 : Сентября 25, 2015, 08:40:18 am »

функция, работающая с клавишами описана в функции, которая "прикрепляется" к виджему-модальному окну в момент создания.
то есть заранее написать имя нужного виджета в этой функции - неврозможно.

как и userdata. Там заранее надо знать у какого виджета взять эту самую userdata.

Наверно выход один - глобальные переменные.

Спасибо за помощь. Просто я опасалась, что незнания -  породят "богомерзкую" кодовую конструкцию. )) 
Записан
deadarcher
Jr. Member
**
Offline Offline

Сообщений: 70



Просмотр профиля
« Ответ #4 : Сентября 25, 2015, 09:51:48 am »

При проектировании окна можно повесить setup function где можно чего-нибудь придумать. Вы смотрели уже в сторону функций ApGetInstance() ApGetWidgetPtr() ?
Записан
talruns
Участник
*
Offline Offline

Сообщений: 38


Просмотр профиля
« Ответ #5 : Сентября 25, 2015, 11:40:34 am »

у меня создание идет так:

mod_reg_wid = CreateWin(wid, apinfo, link_callback,...);

==============
в CreateWin куча функций - создание модального региона, создание региона окна, в том числа - функция ловли нажатий клавиши.
но привязки к виджетом еще нет - так как окно еще как таковое не создано.

поэтому, как я понимаю,  ApGetInstance() я воспользоваться не могу..
Записан
deadarcher
Jr. Member
**
Offline Offline

Сообщений: 70



Просмотр профиля
« Ответ #6 : Сентября 25, 2015, 01:41:05 pm »

А вы окна в билдере создаете или программно ?
Ещё как вариант, все виджеты, которые могут быть проверены в обработчике, предварительно занулить (NULL), если такое возможно. Тогда их можно будет хоть както исключить из проверки. И при разрушении/закрытии окна снова занулять (только хитро).

Записан
talruns
Участник
*
Offline Offline

Сообщений: 38


Просмотр профиля
« Ответ #7 : Сентября 28, 2015, 09:01:47 am »

Все таки сделала наименее хлопотный вариант.
Глобальная int, и в зависимости от создаваемого окна - присваивается имя виджета.
Спасибо.

PS Окна в билдере.
Записан
Страниц: [1]
  Печать  
 
Перейти в: