|
|
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
автордаже А. Козин через доп. поле предлагает... слово даже не уместно в контексте т.к. считаю сергея гаврилова более квалифицированым спецом ... по теме разберусь детальнее как тока будет немного времени наверняка ерунда какая - нить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 15:55:34 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
вадяТабом не пробовал - не используют. похоже это не решенная проблема.... в лоб не решается даже А. Козин через доп. поле предлагает... Текстбок это не совсем настоящее окно, он имеет hwnd, только тогда, когда получает фокус. Видимо при щелчке мыши событие получения фокуса возникает до того, когда поле действительно получает фокус и имеет hwnd, который возвращает GetFocus. Это легко проверить. Действительно, при щелчке мыши на поле GetFocus возвращает hwnd формы (при переходе по Tab - hwnd текстбокса). В общем случае это легко обойти с помощью таймера Допустим на событие получения фокуса Text0 вешаем процедурку Private Sub Text0_GotFocus() Debug.Print "Text0_GotFocus", GetFocus() Me.TimerInterval = 10 End Sub А на таймер Private Sub Form_Timer() Debug.Print "Form_Timer", Me.ActiveControl.name, GetFocus() Me.TimerInterval = 0 End Sub Text0 - первый контрол и получает фокус при открытии При открытии формы имеем Text0_GotFocus 1771832 Form_Timer Text0 91752644 - правильный hwnd При последующем получении фокуса щелчком мыши: Text0_GotFocus 8390862 - hwnd формы Form_Timer Text0 91752644 - правильный hwnd ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 16:10:50 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
АлексейК автордаже А. Козин через доп. поле предлагает... слово даже не уместно в контексте т.к. считаю сергея гаврилова более квалифицированым спецом ... Спасибо, Алексей. Хотел бы соответствовать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 16:16:31 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
Не посоветуете ли заодно, как скрывать календарь, если пользователь передумал по нему кликать и просто перешел на другой контрол (у меня на форме обычный контрол - календарь). На событие потери фокуса самим календарем не удается повесить код - кричит - нельзя скрыть активный контрол.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 16:45:07 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
мужики! специалисты вы все классные. поэтому и спрашиваю. через таймер - это на данный момент лучшее предложение. мне оно больше нравится, чем доп. поле. но в идеале хотелось бы конечно как-нибудь более правильнеееее, не через что-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 17:07:13 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
не шибко вчитываясь и вдумываясь, целиком и полностью присоединяюсь к мнению Саныча, о том, что что знания Left и Top должно быть достаточно. в коде значения возвращаются в твипах. их значения надо пересчитать в пиксели, чтобы использовать вместе с апи-функциями. У Гетса описан в исходных кодах класс AccessInfo , в котором есть "все необходимое". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 17:54:52 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
авторНе посоветуете ли заодно, как скрывать календарь, если пользователь передумал по нему кликать и просто перешел на другой контрол (у меня на форме обычный контрол - календарь). На событие потери фокуса самим календарем не удается повесить код - кричит - нельзя скрыть активный контрол.... видимо совсем старенькая версия у тебя последний называется datepikerv33.mdb в ней есть код закрывающий календарь при клике вне календаря + всякой красоты немеряно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 17:55:35 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
2АлексейК если не влом. переделать datepikerv в модель "выбор даты в четыре клика" слева на право список годов текущий и +/- 4 в видны в списке - первый клик список месяцев номер + назвние видны все - второй клик дни - третий клик четвертый клик - ок / кансел чета в раскрывающихся списках долго искать когда часто работаешь с датами а четвертый - по вкусу , иногда прмахиваешься кликая в день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 18:18:47 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
Victoshaне шибко вчитываясь и вдумываясь, целиком и полностью присоединяюсь к мнению Саныча, о том, что что знания Left и Top должно быть достаточно. Чем-то напомнило всенародное осуждение Солженицина, в 70-е: "Я этого ... не читал, но целиком и полностью поддерживаю партиию ..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 19:59:52 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
автор Хотел бы соответствовать :) Подтвеждаю - соответствуешь!!! идея с таймером прокатывает как нада. эффект такой как и хотелось. на 99% устраивает. спасибо!!! (у меня , не скромно конечно, мысль насчет таймера мелькала, но видимо не стока опыта, чтоб проявиться в действии) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 21:20:23 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
АлексейКвидимо совсем старенькая версия у тебя последний называется datepikerv33.mdb в ней есть код закрывающий календарь при клике вне календаря + всякой красоты немеряно Дык и подсказал бы идею реализации (достаточно только про клик вне календаря, а красоты немерянные нам без надобности). А левые контролы юзать влом, да и нефиг баловать юзеров красотами природы - индо работать перестанут - медитировать начнут... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 16:54:54 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
если нужно простое решение, но без возможности редактирования даты вручную - ставь календарь на событие клик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 16:57:16 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
АлексейКесли нужно простое решение, но без возможности редактирования даты вручную - ставь календарь на событие клик Елы-палы! Ставить не проблема! Проблема скрывать (Visible = False). Пока все поля формы на событие получение фокуса у меня имеют ссылку на функцию, скрывающую календарь. Но хотелось бы без дополнительных заморочек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 17:02:46 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
Виктор Сенин старался, делал. (кстати его что то давно не видно) по этому поводу и сделали версию datepikerv 33 .mdb попробуй сначала? в этой версии при клике вне области календаря календарь закрывается сам - не надо никакого кода! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 17:16:52 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
Алексей, блин! Я ж говорю мне не надо сторонних компонентов (фирменных/нефирменных) тем более для моей задачи. Если она не решается более простым способом, дык, мне и функции достаточно. :о) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 17:24:12 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
я может и не до конца понял в чём трабл, но такой код вполне работает: Private Sub Form_Timer() If Screen.ActiveForm.Name <> Me.Name Then DoCmd.Close acForm, Me.Name End If end sub форма, типа календарь, pop-up, при клике мимо формы календарь закрывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 17:24:14 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
Kelmeя может и не до конца понял в чём трабл, но такой код вполне работает: Private Sub Form_Timer() If Screen.ActiveForm.Name <> Me.Name Then DoCmd.Close acForm, Me.Name End If end sub форма, типа календарь, pop-up, при клике мимо формы календарь закрывается. Код будет работать (даже проще было бы сделать на Потерю фокуса календарика), если бы не Модальные формы 2АлексейК >>кстати его что то давно не видно Привет! Я как сурок (?) из фильма "ДМБ" - его не видно, а он есть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 00:05:32 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
Serge Gavrilov Victoshaне шибко вчитываясь и вдумываясь, целиком и полностью присоединяюсь к мнению Саныча, о том, что что знания Left и Top должно быть достаточно. Чем-то напомнило всенародное осуждение Солженицина, в 70-е: "Я этого ... не читал, но целиком и полностью поддерживаю партиию ..." Вышеприведенное замечание расценил как «приглашение к просмотру». Время выбралось только сейчас – пардон за задержку Посмотрел. Вот наблюдения. 1) Про код вычисления координат окна. Исходный вариант FormPlacement – без стеснения хорош. Однако, вполне приемлемо по точности вычисления позиции заменяется на (для Акцесс XP) Код: plaintext Код: plaintext 1. 2. две последние функции вычисляют поправку на «толщину окна» код в файле. Детали их реализации меня не вполне удовлетворили, но в целом, для «первичной оценки» - сгодится. Так, что – не знаю что там про «партию», а Left и Top - достаточно 2) Про хуки, мыши и модальность. Хук на мышь возник из-за модального запуска формы. А зачем нужен модальный запуск при использовании на форме – я не понял, потому в прикладываемом файле модальность, и «всплываемость» с формы сняты. Соответственно, исчезла потребность в мышином хуке и он заменен на запуск «закрывающего таймера». 3) Про исходную проблему автора топика. У нее два источника - первый – модальность запуска формы, второй - установка на «хозяина» через объект Screen, который может не иметь ни «активного контрола», ни «активной формы» в процессе загрузки «хозяйской формы». Выложенный вариант использует модифицированный метод Friend Sub SetParent(tForm As Form) Думаю, что умнее было бы в обычном модуле завести переменную для хранения формы хозяина и обвесить ее функциями чтения/записи. В прикладываемом файле есть ленточная форма на таблице, которая демонстрирует работу «календаря» по входу в поле со значением Null. PS архив сжат программой 7-zip, (иначе не умещается в 70 кб.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2005, 04:11:15 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
на всякий случай (типа архив не откроется) - вот что там было в качестве "2х фукций" Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2005, 04:27:40 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
большой сенкс за проделанную работу. буду еще читать, изучать. на данный момент использую с таймером , но не везде идет. вопрос предложенное решение годится для поля в ленточной подчиненной формы? (к сожалению нет времени глубоко вникать в текст кода, ремонт......) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2005, 21:52:01 |
|
||
|
Получение фокуса и координаты поля
|
|||
|---|---|---|---|
|
#18+
вадябольшой сенкс за проделанную работу. буду еще читать, изучать. на данный момент использую с таймером , но не везде идет. вопрос предложенное решение годится для поля в ленточной подчиненной формы? (к сожалению нет времени глубоко вникать в текст кода, ремонт......) в том виде, в котором оно было выложено - не годится для вложенных ленточных . Потому, что будет врать на величину заголовка окна. для табличной формы/подформы тоже в этом виде не годится. Чтобы поправить на подчиненную - нужно подправить getYDeltaFormWidth в случае, если форма вложенная, то возвращать только ширину SM_CYBORDER Чтобы заработало для всех вариантов (+ табличная форма/подформа) надо подправить вычисление позиции для случая табличной формы. выглядеть это может так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. самое малоприятное в этом деле - getSheetXPos() что-то умного ничего не нашлось, и в результате , в недописанном, недопонятом но, как будто - рабочем виде, это выглядит так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. getXBorderWidth возвращяет (должна возвращять) "толщину сетки". сейчас выглядит так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2005, 05:21:18 |
|
||
|
|

start [/forum/topic.php?fid=45&gotonew=1&tid=1669429]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 337ms |

| 0 / 0 |
