[JFWRus] Re[8]: функцияFindGraphic
Здравствуйте, Литус.
Вы писали 15 апреля 2009 г., 20:27:49:
ЛА> Если можно опешите здесь подробнее такой метод применяеться
ЛА> в компонентах
Это не правило а скорее конкретная ситуация, бывает просто не
достаточно проверки только текущего класса.
Вот пример ранее указанной функции.
Int Function IsAddressGrid ()
return !MenusActive ()
Если не активно меню, а то бывают случаи, когда при активном меню
возвращается класс элемента бывшего активным до вызова меню.
&& !DialogActive ()
Если не активно диалоговое окно, возможно это и лишняя проверка,
но не мешает.
&& GetWindowClass (GetFocus ()) == "TFieldInEdit"
Проверяем текущий класс.
&& GetWindowClass (GetParent (GetFocus ())) == "TAddressGrid"
Проверяем класс родителя.
Здесь проверяется ряд условий, и если они все выполняются, то это
действительно искомый нами элемент.
Можно делать проверку по тексту на экране, но это привязка к
языковому интерфейсу
программы, что не очень хорошо, лучше этого избегать.
Конечно лучше использовать идентификатор элемента управления
(ControlID), но в VCL компонентах он динамический, и нет смысла
его проверять он всегда равен дескриптору окна. Хотя в некоторых
диалоговых окнах Word есть элементы с одинаковыми
идентификаторами.