|
help my
|
|||
---|---|---|---|
#18+
Вижу РВ в глаза 3-ю неделю (т.е. учусь) пробл.: dw_1 в нем три DDDW выбор во 2-м зависит от того, что выбрано в 1-м, 3-м, - от 2-го все данные выбираются из одной таблицы. КАК ЭТО СДЕЛАТЬ!?!? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2003, 14:15 |
|
help my
|
|||
---|---|---|---|
#18+
Могу посоветовать фильтровать данные... Или запрашивать новые каждый раз при выборе. Проблемма одна и та-же если показывается строка, а в данных цифра. В текущей строке надо видеть DDDW, с отобранными данными, в остальных строках надо видеть DDDW со всеми данными, иначе будут показаны цифры. Но вообще-то это не очень хорошая идея строить интерфейс в билдере таким образом. Вынеси структуру отдельно, а данные отдельно. То есть первый DDDW в отдельное DW, в зависимости от него отбираешь второе DDDW во втором DW, в зависимости от второго отбираешь данные в третьем. Первые два для выбора, третье для записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2003, 16:58 |
|
help my
|
|||
---|---|---|---|
#18+
Проблема цифр легко решаема. После обновления зависимого DDDW - либо фильтром, либо файндом убедись, что текущая запись имеется. Если ее нет - очистка поля. Это и концептуально верно. Единственный неудобств заключается, когда пользователь непреднамеренно ошибся (неверный выбор строки в родительском DDDW) - тут либо надо заново выбирать чилдренка, либо помнить его последний код до сохранения и если он существует - заново выбирать. Мое мнение - 1 вариант нагляднее и проще. 2 - иногда требуется для особо одаренных юзеров. Выбирайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2003, 10:19 |
|
help my
|
|||
---|---|---|---|
#18+
2Gosha Если содержимое dddw_1, dddw_2, dddw_3 зависит от значения поля в ТЕКУЩЕЙ записи dw_1 и их, записей, более 1, но IMHO, задача не решаема. Обоснование: все настроики DDDW_i от текущей записи "испортят" отображение для других записей, поскольку содержимое dddw_i ЕДИНО для всего dw_1. Вывод: менять идеологию построения интерфейса (отказ от настраиваемых dddw). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2003, 12:49 |
|
help my
|
|||
---|---|---|---|
#18+
Ерунда какая-то. Всё это делается, существуют наработанные методы того, как это делать. Основная идея состоит в том, что DDDW ВСЕГДА со всеми данными, а у рядов, значения которых не подходят в момент просмотра, DetailHeight делается 0. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2003, 20:52 |
|
help my
|
|||
---|---|---|---|
#18+
Вот один из вариантов, (я такой НЕ применяю), но линков на мой нет, а тут аттачментов нет... http://www.pbdr.com/pbtips/dw/fltrdddw.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2003, 22:31 |
|
help my
|
|||
---|---|---|---|
#18+
Наврал, вот у Влада Ермолаева: http://web.vrn.ru/567637/PB/DW/DW007/pbdw007.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2003, 22:35 |
|
help my
|
|||
---|---|---|---|
#18+
Не знаю почему Ермолаеву не нравится вариант с фильтрацией. ИМХО он работает лучше всех остальных. Вариант с DetailHeight=0 сводит с ума scrollbar, получается некрасиво. Вариант (скроее всего Мартина Баннистера образца 2001 года но точно не помню) использует два события pbm_dwndropdown для фильтрации и установки флажка и pbm_erasebkgnd для сброса флага и снятия фильтра. Переход по стрелкам сделать со скроллингом к нужной строке в dddw несложно. Скроллбар при этом получается корректный, и display value отображается нормально для всех строк. Зорин А. "I love deadlines. I like the whooshing sound they make as they fly by." -- Douglas Adams ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2003, 11:51 |
|
help my
|
|||
---|---|---|---|
#18+
А на мой взгляд Вариант с DetailHeight работает лучше всех :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2003, 18:30 |
|
help my
|
|||
---|---|---|---|
#18+
А что будет при этом отражаться в поле, которое DDDW, но в других строках??? Имеется в виду ситуация, когда DataColumn содержит повторяющиеся значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2003, 14:54 |
|
help my
|
|||
---|---|---|---|
#18+
Вариант с DetailHeight не повлияет на то, что будет отражаться в поле, которое DDDW, но в других строках... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2003, 18:46 |
|
help my
|
|||
---|---|---|---|
#18+
Еще пару способов такие: (Выдержка из описания с http://www.oviont.com/detail.php?sid=66&id=55 ) Способ 1. Идея заключается в том, чтобы успеть снять фильтр до отрисовки кодов в остальных записях. Для этого фильтр навешивается при выпадении списка, а снимается в событии DwPaint – отрисовки основного DW. u_setdddwfilter. Способ 2. Подключение справочника типа название-название: тогда код совпадает с названием, потому ничего не пропадает. Тогда: справочную таблицу пристегивать LEFT OUTER JOIN-ом в SQL основной, иметь кодовый столбец основной таблицы невидимым, а справочник пристегивать на Join-утый столбец справочной таблицы. Тогда можно даже не фильтровать, а заменить фильтрацию SQL-м, но тоже при выпадении списка. При выборе значения из справочника присваивать соответствующий код невидимому столбцу. Оба реализованы в библиотеке с упомянутой ссылкой :-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 19:42 |
|
help my
|
|||
---|---|---|---|
#18+
Я попытался реализовать способ фильтрации dddw с помощью событий pbm_dwndropdown для фильтрации и установки флажка и pbm_erasebkgnd для сброса флага и снятия фильтра. Все работает прекрасно , только есть один нюанс. Получается не совсем красиво с высотой выпадающего списка. Есть такой параметр "Lines in Drop Down". Так вот, если dddw отфильтровать , то список с правильной длиной выпадает только если колонка с dddw теряет и снова получает фокус. Иначе , получается так, что dddw "полагает" , что записей в нем столько , сколько было при первом retrieve() или при последнем "раскрытии". Например , "Lines in Drop Down" = 10. При исходном retrieve() получено 30 записей в dddw. Если не фильтровать, выпадет список с 10 записями и srcollbar-ом, это правильно. Если же отфильтровать вышеуказанным способом, так, что остается например 5 записей , то выпадет список длиной в 10 позиций 5 последних из которых пустые. Если же после этого колонка потеряет и снова получит фокус, то при последующем раскрытии получаем корректный список в 5 записей. Проблема в том , что фильтр накладывается именно при "выпадании",вроде уже нет возможности поменять фокус. Пытался также в момент "выпадания" в процедуре фильтрации менять параметр данной колонки "Lines in Drop Down", при этом выпадающий список вообще отказывается появляться. Видимо , некорректно менять этот параметр в этот момент. Как-то можно заставить dddw выпадать с "правильной" длиной списка ? Вариант с "Lines in Drop Down" = 0 не устраивает по эстетическим соображениям. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2003, 10:22 |
|
help my
|
|||
---|---|---|---|
#18+
Вопрос Lines in Drop Down уже обсуждался на этом форуме. Не трогай их вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2003, 18:46 |
|
help my
|
|||
---|---|---|---|
#18+
Я и не трогаю, хочу только каким-нибудь образом заставить выпадать список с правильной длиной. Неужели никто этого не делал? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2003, 18:59 |
|
help my
|
|||
---|---|---|---|
#18+
Если не будешь трогать, то будет с правильной длинной. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2003, 19:27 |
|
help my
|
|||
---|---|---|---|
#18+
У меня возникло такое решение. Если количество строк в dddw слабо зависит от текущей записи , где выпадает список , и в среднем предсказуемо , можно ставить Lines in Drop Down = x ( некое "удобоваримое" значение , зависящее от количества строк в dddw но не более 10-20 ) Иначе , оставляем все на откуп системе ( Lines in Drop Down = 0 ) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2003, 11:01 |
|
help my
|
|||
---|---|---|---|
#18+
Вовик я в РВ 2 мес. и делаю так: integer nol DataWindowChild rs_dddw if dwo.name="DDDW_1" then SetNull(nol) dw_1.object.DDDW_2[row]=nol dw_1.Update() dw_1.GetChild("DDDW_2",rs_dddw) dddw_2.SetTransObject(sqlca) dddw_2.SetFilter("svyaz="+string(dw_1.object.DDDW_1[row])) dddw_2.Filter() dddw_2.retrieve() end if ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 13:05 |
|
|
start [/forum/topic.php?fid=15&fpage=111&tid=1339392]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 231ms |
total: | 361ms |
0 / 0 |