Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
27.11.2014, 19:29
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
Для позиционирования автономной формы около контролов уже открытой табличной формы, используется апи-функция GetFocus (Private Declare Function GetFocus Lib "User32" () As Long). По задаче координаты контрола должны вычисляться на события получения фокуса контролом. Но не вычисляются, вернее неверно вычисляются и все контролы формы (текстбоксы , комбо) имеют один и тот же hwnd. Подскажите, как найти hwnd контролов формы при получении ими фокуса? Что интересно, если поставить GetFocus на событие Change и вручную, именно вручную внести данные в поле, то hwnd вычисляется правильно. Как обойти этот затык? Где-то прочитал, что в каком-то календарике эта задача решена. Но не могу найти топик с решением. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.11.2014, 20:46
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
getfocus1, возможно вы имели ввиду это ? :) http://am.rusimport.ru/msaccess/topic.aspx?ID=356&find=?????? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.11.2014, 23:21
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
Спасибо, guest_rusimport. Этот календарь я видел. Тот же гетфокус. Те же сны (с) Ну, вот посмотрите. Сделал примерчик с табл.Сотрудники из борея. Если ходить по полям, то HWND не меняется. Если в любом поле поменять хоть что-то, то немедленно иной hwnd. Может у меня глаза застило, может вы увидите где я ошибаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.11.2014, 23:25
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
Не прикрепляется файлик. Попробую еще раз ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 00:56
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
getfocus1... Но не вычисляются, вернее неверно вычисляются ... Я пользую алгоритм из календарика. Все вычисляется/позиционируется правильно. У Вас точно неверно вычисляется? Или может неверно позиционируется форма? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 02:01
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
Покажу на примере. Та же форма, что и прежде. Но на полях Фамилия и Имя в событиях SetFocus и Change вызывается форма, которая должна встать чуть ниже активного контрола. На Change все встает правильно. А на SetFocus форма совсем в другом месте. В отладке выяснил, что это из-за неверного вычисления HWND функцией GetFocus. Вот и прошу совета как заставить GetFocus показывать правильное значение. Или пойти другим путем, но каким? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 05:14
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
getfocus1, ну, если вам надо отслеживать событие получение фокуса, то можно так :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 11:34
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
getfocus1, откуда взялись предположения, что элементы управления на акцессовской форме оконные, что окон много, HWND неизменны и т. д.? Возьмите Spy++ или аналог (WinSight32 и т. п.) для начала и посмотрите, из чего состоит форма. Насчёт других путей: возьмите Inspect , и если информация, им выдаваемая, (п)окажется полезной, подключите к проекту библиотеку Microsoft Office xx.x Object Library и используйте скрытый в ней интерфейс IAccessible для получения доступа к этой информации. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 11:59
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
Спасибо, guest_rusimport! Хотелось бы обойтись без таймера, но видимо не получится. Но есть один неприятный момент. Если щелкнуть на пересечении записей (курсор при этом превращается в светлый крестик), то ситуация опять прежняя. Смотрите рисунок. Есть ли выход? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 12:02
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
13-й квартал, желательно обойтись встроенными средствами Access. Из дополнительных только апи. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 12:44
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
getfocus1, утилиты полезны для понимания ситуации вами, как разработчиком. Их не нужно распространять на клиентские машины. Библиотека типов ставится с Офисом, и является "встроенным средством Access". Или вы CommandBar тоже не будете использовать на основании того, что он описан в Офисной библиотеке? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 12:46
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
getfocus1Для позиционирования автономной формы около контролов уже открытой табличной формы ИМХО, событие GotFocus возникает ПЕРЕД получением фокуса полем. У вас что, автономная форма все время открыта и бегает по экрану следом за фокусом? Объясните вашу стратегию. Назначение формы? Кстати, календарик обычно открывается при нажатии на кнопочку или двойным щелком по полю. В этот момент элемент, по которому щелкаете, точно имеет фокус. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 12:53
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
getfocus1, кстати, Microsoft Active Accessibility - часть ОС, и доступ к ней как раз через API, просто библиотека типов сильно упрощает обращение к объектно-ориентированной части этого API. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 13:22
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
13-й кварталИли вы CommandBar тоже не будете использовать на основании того, что он описан в Офисной библиотеке? Использование меню и контекстных меню не предполагается. Но спасибо за направление в отладке Анатолий ( Киев )ИМХО, событие GotFocus возникает ПЕРЕД получением фокуса полем. Понял. Но тогда странно, что DoEvents, записанный после получения фокуса не исправляет ситуацию. Или я неправильно понимаю действие DoEvents? Анатолий ( Киев )У вас что, автономная форма все время открыта и бегает по экрану следом за фокусом? Объясните вашу стратегию. Назначение формы?Это пожелание заказчика иметь интерфейс для связанных списков в табличной форме. Единственный контрол в ней это комбо, роусоурс которого меняется в зависимости от значений других полей в записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 13:51
|
|||
---|---|---|---|
Позиционирование у контрола формы |
|||
#18+
getfocus1Анатолий ( Киев )У вас что, автономная форма все время открыта и бегает по экрану следом за фокусом? Объясните вашу стратегию. Назначение формы?Это пожелание заказчика иметь интерфейс для связанных списков в табличной форме. Единственный контрол в ней это комбо, роусоурс которого меняется в зависимости от значений других полей в записи. Из табличной формы одним кликом попадаем в форму-карточку, в которой связанные списки программируются без проблем. Потом, тоже одним кликом - обратно. Или остаемся в карточке и в ней переходим на следующую запись, пока не захочется вернуться в табличную. Т.е. не соблюдая букву пожелания, вы соблюдаете его дух, не ухудшаете эргономику, делаете реализацию в разы быстрее штатными фичами. Вменяемому заказчику это легко обосновывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 14:10
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
Может попробовать посчитать с помощью SetCursorPos? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 14:43
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
getfocus1, на вот 15165216 , у qwerty112 срисуй. Там, по моему, это между делом решено. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 14:47
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
П-ЛИз табличной формы одним кликом попадаем в форму-карточку, в которой связанные списки программируются без проблем. Потом, тоже одним кликом - обратно. Или остаемся в карточке и в ней переходим на следующую запись, пока не захочется вернуться в табличную. Т.е. не соблюдая букву пожелания, вы соблюдаете его дух, не ухудшаете эргономику, делаете реализацию в разы быстрее штатными фичами. Вменяемому заказчику это легко обосновывается.Этот вариант рассматривался. Но было признано, что при большом объеме ввода нежелательно лишний раз прибегать к мышке (или клавиатурному сочетанию для перехода) и перемещать внимание оператора на другую часть формы. Разве не так? В принципе и показ доп.формы на получении фокуса не столь обязателен, поскольку оператор начинает набирать текст и срабатывает Change, правильно фиксирующий доп.форму. Но как бы для порядка надо. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 14:52
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
nord-woolfМожет попробовать посчитать с помощью SetCursorPos?То, что я находил, тоже не слишком надежно срабатывало. Или я неверно применял. :) Может быть у вас есть хорошая ссылка? Был бы благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 14:54
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
\\\\getfocus1, на вот 15165216 , у qwerty112 срисуй. Там, по моему, это между делом решено.А что там по ссылке есть? Только простые и ленточная форма. Табличной нет. А с простой и ленточной формами проблем нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 14:56
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
Не, я не пробовал. Подозреваю, при вызове на GotFocus возможен аналогичный эффект, но так, на всякий случай... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 15:17
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
getfocus1\\\\getfocus1, на вот 15165216 , у qwerty112 срисуй. Там, по моему, это между делом решено.А что там по ссылке есть? Только простые и ленточная форма. Табличной нет. А с простой и ленточной формами проблем нет.Так ты читать не умеешь!? qwerty112примерчик смотреть форму Q в режиме ленточной или таб .формы ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 16:26
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
getfocus1Спасибо, guest_rusimport! Хотелось бы обойтись без таймера, но видимо не получится. Но есть один неприятный момент. Если щелкнуть на пересечении записей (курсор при этом превращается в светлый крестик), то ситуация опять прежняя. Смотрите рисунок. Есть ли выход? извиняй - работа ... выход всегда должен быть :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2014, 22:02
|
|||
---|---|---|---|
|
|||
Позиционирование у контрола формы |
|||
#18+
guest_rusimport, очередное спасибо! Но не осознал, что изменилось и где. Ткните носом, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/search_topic.php?author=%D0%93%D0%B3%D0%B3%D0%BE%D1%81%D1%82%D1%8C&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 629ms |
total: | 799ms |
0 / 0 |