|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
Как определить, что DDDW закрылся? Т.е. есть datawindow с несколькими полями для ввода, одно из которых представляет собой DDDW. Когда на этом поле кликаешь, выпадает список. Как поймать момент, что юзер куда-то кликнул? (при этом DDDW закрывает drop-down) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 11:05 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
Когда в DDDW пользователь что то выбрал, наступает событие ItemChanged(...), когда пользователь переместил курсор на другое поле в DW, наступает событие ItemFocusChanged(...) --- С уважением, IKAR ikarhomecenter@narod.ru IkarHomeCenter ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 11:14 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
А если он вообще фиг знает куда кликнул? на волпапер, например? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 11:45 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
mustliveА если он вообще фиг знает куда кликнул? на волпапер, например? Тогда, вообще то, как и везде - LoseFocus(...) ... --- С уважением, IKAR ikarhomecenter@narod.ru IkarHomeCenter ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 12:25 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
Да уж... неудобно ни разу :( ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 12:37 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
mustlive , у меня нашелся такой документ, оригинальный адрес не отвечает, привожу фрагмент: автор7) Explanation of some undeclared datawindow specific events: pbm_dwclosedropdown: This event occurs whenever a dropdown column is closed; pbm_dwescape: User pressed the escape key (within the datawindow control); pbm_dwnbacktabout: Datawindow has lost the focus with a Shift+Tab key combination, this is, it happens when the focus is in the first tab sequence column and the user presses Shift+Tab; pbm_dwndropdown: This happens whenever a dropdown column is opened, see Tip 13 for code; pbm_dwngraphcreate: This event occurs when a graph datawindow is being created, see Tip 16 for a possible use for this event; pbm_dwnmousemove: This event is a special mousemove event for the datawindow object, it has the following parameters: - XPos: Mouse horizontal position, relative to the object, measured in PBU's; - YPos: Mouse vertical position, relative to the object, measured in PBU's; - Row: Row beneath the mouse pointer; - dwo: Datwindow object beneath the mouse pointer; pbm_dwnprocessenter: User has pressed the enter key (within the datawindow control); pbm_dwnrbuttondblclk: Occurs when a datawindow is doubleclicked with the right mouse button; pbm_dwnrbuttonup: Occurs when the right mouse button is released over the datawindow control; pbm_dwntabupout: Occurs whenever the upper arrow is pressed (on a single line editable column); pbm_dwntabupdown: Occurs whenever the down arrow is pressed (on a single line editable column); pbm_dwntabout: Datawindow has lost the focus with the Tab key, this is, occurs whenever the focus is in the last column of the tab sequence and the Tab key is pressed; pbm_dwscrolllinehome: This event happens when the datawindow control gains the focus with the Tab key; может пригодится. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 13:20 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
отмапить надо pbm_erasebkgnd может происходить и по другим поводам, но при закрытии дропдауна происходит всегда. взведите флаг при открытии и если мы в pbm_erasebkgnd и флаг взведен - вызывайте свое событие (чтонть типа xxx_closedropdown) и сбросьте флаг. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 13:22 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
pbm_dwclosedropdown: This event occurs whenever a dropdown column is closed; Враньё. pbm_dwndropdown: This happens whenever a dropdown column is opened, see Tip 13 for code; а вот это пригодится для ловли открытия дропдауна. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 13:24 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
Зорин Андрей pbm_dwclosedropdown: This event occurs whenever a dropdown column is closed; Враньё. Не совсем вранье, но срабатывает не всегда. Если фокус уходит с dw, например, если кликнуть по заголовку окна, событие происходит. Если же перейти на другую колонку или же просто закрыть dddw щелчком по стрелке, которым оно открывается, событие не вызывается. Так что, скорее всего, толку от него мало. В свою очередь, я отлавливал закрытие dddw событием перерисовки dw, что, имхо, тоже не есть хорошо. Просто сделать было надо и лучшего способа я не нашел. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 14:40 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
Как всегда, напрашивается вопрос - зачем это всё? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 18:54 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
ФилиппКак всегда, напрашивается вопрос - зачем это всё?для фильтрации например. когда отображать надо всё, а выбирать давать только из некоего подмножества. Приходилось делать зависимые друг от друга дропдауны? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 19:47 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
2 gerss что значит не совсем? whenever - означает "всякий раз, когда". поскольку это не так - то враньё, однозначно! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 19:51 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
авторПриходилось делать зависимые друг от друга дропдауны? Да (кстати сказать зависимые друг от друга дропдауны - это частный случай дропдауна зависимого от значения другой колонки, посему не совсем понятна формулировка вопроса :-) ). К сожалению там где я сейчас работаю, через pbm_dwndropdown и сделано, чему я большой противник. Тем не менее у нас никого не интересует, авторКак определить, что DDDW закрылся Я предпочитаю или SetDetailHeight + Filtering of dddw + scripting the pbm_command or other event to catch RowFocusChanged on DDDW , или вообще не иметь DDDW на многорядных DW, в которых содержимое DDDW зависимо от значения другой колонки, а вместо этого иметь картинку рядом с displayonly колонкой, на которую клик, и выбираешь из окошка... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 20:29 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
Как всегда, нашлись ярые сторонники метода и ярые противники. Как и те, которые спрашивают - нафик это надо? :) Мне например надо для фильтрации зависимого DDDW. Если бы работал абстрактный Click - все было бы намного проще (Click словил - значит, DDDW закрылся. Или клинкули в нем). Но его почему-то не захотели сделать. Хотя и примитивно просто, и кучу проблем бы сняли ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 20:50 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
авторНо его почему-то не захотели сделать. Хотя и примитивно просто, и кучу проблем бы сняли... Не всё так просто как кажется. Окно, которое появляется для показа DDDW делает SetCapture, посему ОНО (а не DW) ловит все клики, чтоб знать, когда закрыться... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 21:17 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
ФилиппДа (кстати сказать зависимые друг от друга дропдауны - это частный случай дропдауна зависимого от значения другой колонки, посему не совсем понятна формулировка вопроса :-) ). узнаЮ Филиппа :-) ФилиппЯ предпочитаю или SetDetailHeight + Filtering of dddw + scripting the pbm_command or other event to catch RowFocusChanged on DDDW ну да, ну да. это наверное намного проще чем с фильтрацией по открытию ;-)) и на обработке other так приятно подтормаживает... да еще и скроллбар так забавно начинает себя вести... плавали - знаем :-))) на этот вариант в 99-ом тогда с Мартином (или это был Рон? эх подводит таки память) кучу времени убили, а результат в итоге средней паршивости получился. а с pbm_erasebkgnd получилось сразу и довольно элегантно. впрочем это все сплошное ИМХО - я о вкусах спорить тут не хотел бы... тем более с главным гуру ;-) ФилиппК сожалению там где я сейчас работаю, через pbm_dwndropdown и сделано, чему я большой противник. Тем не менее у нас никого не интересует в чем проблема то? что в этом методе вызывает такое отвращение? Филиппили вообще не иметь DDDW на многорядных DW, в которых содержимое DDDW зависимо от значения другой колонки, никакой многорядности нет вообще. у меня есть некая таблица где часть записей неактивна. показывать(т.е. декодировать из id в display name) значения надо, а выбирать в дропдауне можно только из активных. запись на форме одна. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2004, 21:37 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
авторникакой многорядности нет вообще. у меня есть некая таблица где часть записей неактивна. показывать(т.е. декодировать из id в display name) значения надо, а выбирать в дропдауне можно только из активных. запись на форме одна. В таком случае это вообще извращение. Раз есть некая таблица где часть записей неактивна, значит в ней есть поле, указывающаее на этот факт, значит этот флаг спокойно может присутствовать в result setе DDDW. Видимые колонки в DDDW имеют expression на цвет текста (всё тот же affordance , чтоб намекнуть юзеру), нацеленный на этот флаг, itemchanged (вероятность и целесообразность скриптинга которого в не зависимости от проблем с DDDW, невероятным образом превышает вероятность скриптинга как pbm_erasebkgnd так и pbm_dwndropdown) обрабатывает на этот флаг и не дает выбирать неактивную запись. ВСЁ. авторв чем проблема то? что в этом методе вызывает такое отвращение? 1) многорядность 2) ^%%ля с посвистом для того чтобы правильно изображался selected row в фильтрованном DDDW когда ты его дропнул Список можно продолжать, но надо ли... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2004, 00:39 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
2 Филипп так уж сразу и "извращение"?! :-(( я разве спрашивал совета как мне лучше сделать? красить неактивные незачем - лучше не показывать, если их неактивных больше двух третей, то скроллить их юзерам не нравится. просят убрать совсем. можно считать что это требование о котором я забыл упомянуть. и не разрешать в itemchanged - это значит анноить юзеров MessageBox-ами? я предпочитаю этого избегать когда возможно. насчет пунктов 1) и 2) - ничего не понял. у меня с многорядностью проблем нет. а если я фильтр дропнул - значит дропдаун закрыт, о каком selected row тогда речь? спозиционировать при открытии (когда я фильтр ставлю) на нужную строку - это 2 LoC, не напрягает совершенно. насчет вероятности тоже не совсем ясно. скриптинг? сервис фильтрации в стиле PFC, независимо от используемого метода, пишется один раз, так же как и сервис навешивания типичных проверок на itemchanged. при таком подходе почти все включается и настраивается в конструкторе. вероятность лезть в erasebkgnd или itemchanged стремится к нулю. Список можно продолжать, но надо ли... Ok. Закроем тему. На вопросы в этом постинге можешь не отвечать. Полагаю нам обоим есть чем заняться помимо этой бессмысленной дискуссии. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2004, 01:51 |
|
Как определить закрытие DDDW?
|
|||
---|---|---|---|
#18+
авторнасчет пунктов 2) - ничего не понял Вот фрагмент pbm_dwndropdown нашего анцестора (мои- ТОЛЬКО поправки чтобы rowselection отображался правильно в дропнутом DDDW): Код: 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. 77. 78. 79. 80. 81. 82.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2004, 03:24 |
|
|
start [/forum/topic.php?fid=15&fpage=102&tid=1339013]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 256ms |
total: | 396ms |
0 / 0 |