|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
Наблюдаю такой эффект : если у DW первой по порядку TabOrder является колонка с типом DDDW или DDLB , то ItemFocusChanged не срабатывает при первом "попадании" фокуса в эту колонку. Это есть нормально? Если нет , то как тогда с этим побороться. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2003, 15:20 |
|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
Что , никто не сталкивался с таким поведением ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2003, 18:23 |
|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
Без указания версии РВ (со всеми подробностями) и ОС, твой вопрос не имеет смысла... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2003, 19:03 |
|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
Да. Так и должно быть. ItemFocusChanged срабатывает только при переходе между ячейками DW. Если же в DW фокус передается из другого контрола в текущую ячейку, то не должно вызываться. У тебя как раз этот случай: до первого получения фокуса текущая ячейка -ячейка с минимальным ненулевым табордером в 1-й строке. А DDDW здесь не причем. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2003, 22:19 |
|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
PB 8.03 Win2k SP4 Ответ понятен. Тогда встречный вопрос : как для этого случая добиться вызова ItemFocusChanged ? Через SetColumn ? через SetFocus ? Как правильнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2003, 10:31 |
|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
Смотря чего ты этим хочешь добиться. Ведь вызов ItemFocusChanged не самоцель, там наверно есть какая-то обработка. Опиши цель и наверно тут что-то посоветуют. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2003, 14:01 |
|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
В самом DW есть instance variable DataWindowChild idwc . В ней хранится ссылка на DataWindowChild текущего столбца DW. В ItemFocusChanged имеется скрипт, инициализирующий эту переменную для текущего столбца. Все работает, за исключением случая , когда DW открывается в первый раз. В данный момент я это обошел , вставив аналогичный скрипт в конструктор DW. Вроде работает ... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2003, 15:33 |
|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
Вовик, так из любопытства - зачем тебе хранить ссылку на DataWindowChild текущего столбца DW? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2003, 19:45 |
|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
Вовик В самом DW есть instance variable DataWindowChild idwc . В ней хранится ссылка на DataWindowChild текущего столбца DW. Создай ф-ю, которая будет для DW возвращать Datawindowchild текущего столбца, и вызывай ее в том месте, где бы ты использовал ту ссылку. Что-то вроде этого (без обработки ошибок): Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2003, 22:45 |
|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
2 Филипп : Занимаюсь динамической фильтрацией DDDW. Для повышения производительности при передаче фокуса в новый столбец анализирую его свойства и заполняю ряд instance - переменных ( в тч idwc) . Потом в соответствующих событиях типа pbm_command , pbm_dwndropdown, pbm_ncpaint , editchanged их использую , чтобы сто раз не вычислять одно и тоже. 2 Anatoly Moskovsky : Спасибо за вариант , но я хочу снизить количество обращений к GetChild, GetColumnName и тп. Для этого и нужна instance - переменная. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2003, 10:32 |
|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
Вовикя хочу снизить количество обращений к GetChild, GetColumnName и тп. Для этого и нужна instance - переменная. Кешируй обращения к GetChild (а GetColumnName и так быстро работает) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2003, 11:44 |
|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
Спасибо, подумаю... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2003, 12:43 |
|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
GetChild, GetColumnName и т.п. есть вызовы DLL функций, поэтому попытки экономии на них с помощью пложения Powerscriptовых конструкций и instance variables, состояние которых нужно правильно поддерживать - упражнения сомнительные... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2003, 18:53 |
|
DDDW с TabOrder =1 и ItemFocusChanged
|
|||
---|---|---|---|
#18+
ФилиппСообщений: 245 GetChild, GetColumnName и т.п. есть вызовы DLL функций, поэтому попытки экономии на них с помощью пложения Powerscriptовых конструкций и instance variables, состояние которых нужно правильно поддерживать - упражнения сомнительные Согласен. Быстрее всего прямо вызывать Код: plaintext 1. 2. 3.
Я тут провел замеры вышеприведенного кода и функций из прежних моих постингов. Цикл из 100000 итерации выполнялся соответственно (P3-1200): - прямой вызов GetChild(GetColumnName(), dwc) - 1.8 сек - вызов ф-и выполняющей GetChild(GetColumnName(), dwc) - 3.8 сек - то же с кэшированием 2.3 сек Видно, что один вызов занимает в худшем случае 0.4 мс - вряд ли сильно замедлит работу скрипта :). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2003, 21:50 |
|
|
start [/forum/topic.php?fid=15&fpage=111&tid=1339382]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 229ms |
total: | 366ms |
0 / 0 |