|
|
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
Привет всем! Просьба помочь в решении маленькой проблемки. Есть PowerBuilder 9. В нем есть ДВ. В котором размещаются отчеты с переменным числом столбцов. Хотелось бы включать свойство HSplitScroll только при необходимости. То есть только в том случае, когда построенный отчет не помещается в ширину (есть прокрутка). Как бы вычислить или определить такую вещь? Я пошел таким путем - найти, сколько места занимают колонки, сравнить со свободным пространством ДВ, и если надо - включать прокрутку. То есть сколько занимают столбцы я уже нашел (суммируем dw_sf.Describe('#'+String(li_currCol)+'.width') для всех колонок). Но как бы определить свободное пространство для данных - никак не пойму. Значение dw.width возвращает ширину не в тех же юнитах, что и dw_sf.Describe('#'+String(li_currCol)+'.width') :( Или я где-то неправильно приготовил?? И еще. Почему-то перебор всех колонок таблицы (выборка свойства через Describe) занимает поразительно много времени... 50 колонок - чуть ли не несколько секунд... Так что может есть какой-то другой способ определения-нужна ли прокрутка в данном ДВ при просмотре на экране?? Заранее спасибо за помощь. Вадим Романенко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 17:32 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
Я думаю должно помочь некоторое шаманство с Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 18:13 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
Vadim Romanenko Значение dw.width возвращает ширину не в тех же юнитах, что и dw_sf.Describe('#'+String(li_currCol)+'.width') :( Или я где-то неправильно приготовил?? Оказалось, что я где-то неправильно приготовил :) Закрался глюк в индексы цикла... Вобщем, копи-пасте привело к плачевным результатам :) Все заработало. Спасибо, извините за беспокойство!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 18:41 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
dw.width это pbunits describe("#1.width") юниты указанные в свойствах DW. т.е. чтобы это сравнивать надо приводить к единым юнитам. dw.width = ширина рабочей области + ширина бордера + ширина вертикального скролинга. чтобы взять ширину рабочей области - надо пользовать виндовую ф-ю BOOL GetClientRect( HWND hWnd, // handle of window LPRECT lpRect // address of structure for client coordinates ); из user32.dll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 18:45 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
Я сделал по-простому: Код: 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. Может кому и пригодится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 18:54 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
Это, а не проще ли Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 20:20 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
Локшин МаркЭто, а не проще ли Код: plaintext Да, действительно dw_sf.Object.DataWindow.HorizontalScrollMaximum выдает ту цифру, которая мне нужна... Но не всегда. Например, при изменении размеров окна с меньшего на больший (повесился на ф-цию of_resize()) свойство .HorizontalScrollMaximum выдает еще старое значение ширины скроллбара... Или вообще какое-то левое... Чего-то даже не пойму!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 15:37 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
Vadim RomanenkoДа, действительно dw_sf.Object.DataWindow.HorizontalScrollMaximum выдает ту цифру, которая мне нужна... Но не всегда. Например, при изменении размеров окна с меньшего на больший (повесился на ф-цию of_resize()) свойство .HorizontalScrollMaximum выдает еще старое значение ширины скроллбара... Или вообще какое-то левое... Чего-то даже не пойму!! А если из of_resize() запостить событие на котором проверять HorizontalScrollMaximum, нормально будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 16:21 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
Vadim RomanenkoИ еще. Почему-то перебор всех колонок таблицы (выборка свойства через Describe) занимает поразительно много времени... 50 колонок - чуть ли не несколько секунд... Делай один Describe типа Describe('#1.width #2.width #3.width') и разбирай результат. будет намного быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 18:41 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрейДелай один Describe типа Describe('#1.width #2.width #3.width') и разбирай результат. будет намного быстрее. Ну проблема то явно не из-за этого, 50 раз такой describe даже на слабой машине - это явно меньше 1 секунды будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2006, 09:55 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
Локшин МаркНу проблема то явно не из-за этого, 50 раз такой describe даже на слабой машине - это явно меньше 1 секунды будет. Да, тут Вы правы! Действительно, там был мой глюк в плане скорости... Я так подозреваю, что достаточно долго работает describe в случае, если обращаюсь к атрибутам несуществующих объектов, что у меня и творилось. Со скоростью вобщем-то проблемы решены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2006, 11:56 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
Локшин Марк А если из of_resize() запостить событие на котором проверять HorizontalScrollMaximum, нормально будет? Чего-то не получается :( Делаю так: из of_resize вызывается: Код: plaintext 1. содержимое event'а: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Так вот! Ресайзю туда-сюда, а в логе - только одна запись :( Что не так??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2006, 12:51 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
Vadim Romanenko Код: plaintext 1. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2006, 13:46 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Код: plaintext 1. Так аппенд ведь по умолчанию?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2006, 14:03 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
Но, как ни странно - помогло... Действительно, там содержится нужное значение!! Вроде как :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2006, 14:05 |
|
||
|
Вопрос про DW
|
|||
|---|---|---|---|
|
#18+
А как бы еще определить физический номер i-той ВИДИМОЙ колонки?? По которому к ней можно обратиться ф-цией describe? (для определения ее координат - х и ширины, т.о. можно получить положение сплита) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2006, 14:33 |
|
||
|
|

start [/forum/topic.php?fid=15&fpage=75&tid=1337943]: |
0ms |
get settings: |
10ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 418ms |

| 0 / 0 |
