 |

Автор/Источник: Ронин Виктор» 29.12.2002 01:05, просмотров сегодня: 1, всего: 2485
статья размещена в группе: Программирование
оценка: 2.334, 18 голосов
Написать эту статью меня подтолкнула проблема, заключающаяся в необходимости наложения двух Control’ов. Причем было необходимо, чтобы пользовательский ввод приходил к определенному из них, но получалось, разумеется, не так, как хотелось — иначе бы проблемы не было. Чтобы побороть ее мне пришлось исследовать какой из Control’ов, находящихся в одном и том же месте формы, получает первым пользовательский ввод.
В Constructor’е я достаточно быстро определил закономерность: Control, который был создан первым, получает первым пользовательский ввод. Однако, в противовес этому, Control, созданный последним, будет последним прорисован, а, следовательно, — будет видно именно его (это не касается ОСи младше 3.5, где Control’ы прозрачные). Вроде бы этим проблема и решается, но я попытался удалить Control, который был создан раньше, и создать его заново (мне нужно было, чтобы лежащий под ним Control получал управление первым).
Вопреки моим ожиданиям, оказалось, что созданный заново Control опять получал управление первым. Оказалось, что получает управление первым тот, который был создан с меньшим ID (это касается Constructor’а 1.82 — я не уверен, что для других Constructor’ов запись ресурсов не идет в другом порядке). Замечу, что изменение ID НЕ ВЛИЯЕТ на получение управления и прорисовку — важен именно ID, под которым был создан Control.
И в очередной раз я думал, что разобрался с этой проблемой. Но все описанное выше я испытывал в Palm OS 3.5, а попробовав запустить ту же тестовую программу на OS 4.0 и OS 5.0, я обнаружил, что у них получение управления обратное OS 3.0-3.5. То есть, получает управление тот Control, который создан последним.
Таким образом, на данный момент я не знаю, как однозначно решить данную проблему без применения обработки penDown’ов в определенной области и отсылки событий нажатия нужным Control’ам. Рано или поздно с ней может столкнуться каждый программист, так что думаю, имеет смысл обсудить эту проблему сообща либо в форуме «Ладошек», либо сразу под статьей, и поставить все возможные точки над «i».
|