|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Добрый день всем! Была такая задача: нужно вывести на экран структуру некоторых объектов в виде схемы, отобразить их состояние (опрашивается или нет - выделение цветом по набору критериев) и позволить выполнить над ними набор действий - через меню (посмотреть разнообразную статистику, отредактировать параметры). Было решено: сделать картинку с изображением всей извращенной структуры. В базу занести координаты объектов на картинке плюс поддерживаемые действия над каждым объектом. Для отображения состояния делался UserObject (подсказал народ на форуме, как сделать статикТекст прозрачным), собственно, для отображения остальной статистики тоже использовались ЮзерОбжекты, но моего производства. Проблема 1: при перерисовке 30-40 объектов все мерзко дергается Проблема 2: созданные позже объекты почему-то перенакрываются созданными ранее :( Как бы порешать еще и эту проблему?? Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 17:16 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
А никак:-) Я же говорил - в datawindow надо делать... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 19:08 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Возможно это проблема винды она не любит когда много окон, а каждый ПБ объект в данном случае, если не ошибаюсь, есть виндючее окно. Хотя 30-40 это вроде не очень много. В таком случае ПБ не виноват и в нем ничего подправить нельзя. В нашем сишном приложении были аналогичные проблемы и решились после перехода к рисованию объектов руками в одном окне, это фактически то же что предлагает Филипп. Если же винда не виновата и это проблема ПБ, то можно для перирисовки и движений объектов использовать виндючий АПИ, это несложно и должно помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2005, 04:28 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Проблему наложения удалось решить при помощи BringToTop динамических объектов в нужном порядке. НО КАК ЖЕ ОНО ВСЕ ДЕРГАЕТСЯ!!! Не из-за BringToTop... Как и раньше. Чего-то ничего в голову не лезет... Наверное буду копать в сторону ВинАПИ... Мне то впринципе вполне устроило бы и просто рисование на картинке. Млин :( ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2005, 15:31 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
В свое время нужно было разрисовывать план помещения разными цветами, использовалась сишная DLL с функцией куда передавался массив координат из базы и цвет, а функция отрисовывала цветной многоугольник. Номера комнат были сверху ввиде статик текст, для возможности вызова контекстного меню. Было это во времена первых пней, и работало достаточно шустро. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2005, 08:00 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
А на чем велась перерисовка, если не секрет?? На чем-то ж функция должна была рисовать? Координат маловато... Если тупой вопрос - заранее звиняйте, я с С и ДЛЛками знаком только понаслышке, сам никогда ничего не делал... :( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2005, 15:51 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Vadim RomanenkoА на чем велась перерисовка, если не секрет?? На чем-то ж функция должна была рисовать? Координат маловато... Если тупой вопрос - заранее звиняйте, я с С и ДЛЛками знаком только понаслышке, сам никогда ничего не делал... :( handle ей передается, на нем она и рисует. А уж чей это handle - это не ее дело :) кстати рисовать не обязательно на C, можно на том же Delphi и рисовать и в DLL или COM-сервер обвязать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2005, 17:44 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Я, думаю, есть смысл последовать совету Филиппа. Если Vadim Romanenkoя с С и ДЛЛками знаком только понаслышке, сам никогда ничего не делал... :( и времени нет на приобретении опыта работы с DLL ( а жаль ), то все должно работать в datawindow. Чтобы при перерисовке ничего не дергалось использовать SetRedraw. Для динамического изменения в свойства элементов рисунка записать функции ( например - изменения координат в зависимости от значения какого нибудь поля ). Всегда можно переопределить объекты и изменить ( если необходимо ) или добавить новые dw_1.Modify( 'Destroy ...' )dw_1.Modify( 'CREATE ...' )На мой взгляд только одно неудобство - если объекты наложены друг на друга, то созданный позднее будет прорисован поверх ранее созданного. Свойства BringToTop тут нет. Во всяком случае я не нашел ничего взамен и вынужден был брать описание объектов из dw_1.Describe("DataWindow.Syntax") а затем dw_1.Modify( 'Destroy ...' )dw_1.Modify( 'CREATE ...' ) в необходимом для меня порядке. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2005, 10:05 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
"ChV" <nospam@sql.ru> сообщил/сообщила в новостях следующее: >На мой взгляд только одно неудобство - если объекты наложены >друг на друга, то созданный позднее будет прорисован поверх >ранее созданного. Свойства BringToTop тут нет. Во всяком случае >я не нашел ничего взамен и вынужден был брать описание объектов из >dw_1.Describe("DataWindow.Syntax") >а затем >dw_1.Modify( 'Destroy ...' ) >dw_1.Modify( 'CREATE ...' ) >в необходимом для меня порядке Есть setPosition datawindow method. -- With regards, Konstantin Goldobin http://www.vsi.ru/~kgold Posted via ActualForum NNTP Server 1.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2005, 10:32 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Спасибо, Константин, за желание помочь. К сожалению setPosition datawindow methodименно метод datawindow, а не его элементов. Т.е. его можно использовать для изменения положения нескольких datawindow "друг относительно друга", а не для изменения внутри одного datawindow элементов "друг относительно друга". Хотел бы я ошибаться ... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2005, 10:41 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
"ChV" <nospam@sql.ru> сообщил/сообщила в новостях следующее: >Спасибо, Константин, за желание помочь. К сожалению >setPosition datawindow method >именно метод datawindow, а не его элементов. >Т.е. его можно использовать для изменения положения нескольких >datawindow "друг относительно друга", а не для изменения внутри >одного datawindow элементов "друг относительно друга". >Хотел бы я ошибаться ... Желание исполнено :). Читайте хелп: Description Moves a control within the DataWindow to another band or changes the front-to-back order of controls within a band. -- With regards, Konstantin Goldobin http://www.vsi.ru/~kgold Posted via ActualForum NNTP Server 1.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2005, 10:45 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Константин, спасибо. Где были мои глаза ? Мне показалось, что я был внимателен, а сам ... . Правда теперь приобрел не плохой опыт в пересоздании объектов DW. А вообще, спасибо этому форуму. Когда работаешь вне коллектива программистов - только через форум и можно узнать в чем был не прав. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2005, 11:41 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Проверил - все замечательно. Но ! Если надо изменить раположение объектов в composite report, то тут все же приходится работать через пересоздание объектов dw.modify( 'Destroy ...') и dw.modify( 'Create ...') ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2005, 17:48 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Sorry - не указал, что в последнем случае dw - имеют тип DataWindowChild. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2005, 17:50 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
ChVSorry - не указал, что в последнем случае dw - имеют тип DataWindowChild. SetPosition method (DataWindows) Description Moves a control within the DataWindow to another band or changes the front-to-back order of controls within a band. Controls DataWindow type Method applies to PowerBuilder DataWindow control, DataWindowChild object , DataStore object ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2005, 18:57 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Мдямс... Похоже прийдется извращаться с динамическим созданием... Внутри ДатаВиндов... На самом деле есть еще один ГРОМАДНЫЙ минус. В сегодняшней моей поделке каждый элемент на картинке - это объект. То есть, сам объект знает о том, что ему делать при нажатии на нем мышкой, при ресайзе... Больше всего мне кажется неприятность с нажатием мышкой на объекте. То есть отображением или еще какого-нибудь динамического меню, или нового объекта... С этим наверное больше всего головной боли... А если попробовать посмотреть в сторону ДЛЛок? так не лучче/перспективнее? Как мнение посетителей? Потому что чуется мне, что на переход к динамическому ДВ прийдется ухайдохать немало времени... Так что если и убивать, то может уже на ДЛЛки? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2005, 16:16 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Vadim RomanenkoМдямс... Похоже прийдется извращаться с динамическим созданием... Внутри ДатаВиндов... На самом деле есть еще один ГРОМАДНЫЙ минус. В сегодняшней моей поделке каждый элемент на картинке - это объект. То есть, сам объект знает о том, что ему делать при нажатии на нем мышкой, при ресайзе... Больше всего мне кажется неприятность с нажатием мышкой на объекте. То есть отображением или еще какого-нибудь динамического меню, или нового объекта... С этим наверное больше всего головной боли? Непонятно почему. Внутри ДатаВиндов каждый элемент на картинке - тоже может быть объектом. Vadim RomanenkoА если попробовать посмотреть в сторону ДЛЛок? так не лучче/перспективнее? Как мнение посетителей? Потому что чуется мне, что на переход к динамическому ДВ прийдется ухайдохать немало времени... Так что если и убивать, то может уже на ДЛЛки? Если б я тратил время, так это деньги на покупку компонента, который умеет Charting делать, а не на написание самопальных ДЛЛок... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2005, 21:25 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
ФилиппЕсли б я тратил время, так это деньги на покупку компонента, который умеет Charting делать, а не на написание самопальных ДЛЛок... Поддерживаю, скорее всего можно найти подходящий ActiveX. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2005, 07:21 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Vadim RomanenkoНа самом деле есть еще один ГРОМАДНЫЙ минус. В сегодняшней моей поделке каждый элемент на картинке - это объект. То есть, сам объект знает о том, что ему делать при нажатии на нем мышкой, при ресайзе... Больше всего мне кажется неприятность с нажатием мышкой на объекте. То есть отображением или еще какого-нибудь динамического меню, или нового объекта...Мне кажется, что вы преувеличиваете трудности. Вам, на мой взгляд, всего-навсего, надо сделать примерно следующее: 1. Создать иерархию невизуальных объектов, которые будут обеспечивать функциональность, аналогичную реализованной в ваших нынешних визуальных объектах, с той только разницей, что предок ваших nvo должен иметь переменную экземпляра, идентифицирующую отрисованный на DW объект (чаще всего это будет прямоугольник или static text). Этот невизуальноый объект должен иметь методы, позволяющие манипулировать с объектом визуальным. 2. В объекте DW, на котором все это будет отображаться, организовать обработку пользовательских событий, которые просто-напросто должны рассылаться невизуальным объектам-приемникам, которые уже имеют необходимый вам функционал (см. п.1). Разумеется, что должен существовать менеджер этих невизуальных объектов, но на его роль, в первом приближении, подойдет само DW. Т.е., создание визуального объекта на DW должно сопровождаться появлением очередного элемента в массиве элементов невизуальных. Вот, собственно говоря, и все... Насколько я понимаю, при правильном подходе к проектированию имевшихся у вас объектов, перевод функционала займет от силы неделю (это я полагаю, взял с большим запасом :-) Vadim RomanenkoС этим наверное больше всего головной боли... А если попробовать посмотреть в сторону ДЛЛок? так не лучче/перспективнее? Как мнение посетителей? Потому что чуется мне, что на переход к динамическому ДВ прийдется ухайдохать немало времени... Так что если и убивать, то может уже на ДЛЛки? Солидарен с Филиппом ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2005, 11:20 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Уважаемые коллеги! совсем глупый вопрос - а как вообще рисовать из DW? плохо представляю себе процесс рисования -то есть никак. а надо нарисовать график Ганта - сетевое планирование. Какие разделы доки надо перечитать? с чего нАчать? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2005, 12:05 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
sboykoа надо нарисовать график Ганта - сетевое планирование. Какие разделы доки надо перечитать? с чего нАчать? Пример графика приведите, а то лично я не в курсе что это такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2005, 13:47 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Локшин Марк sboykoа надо нарисовать график Ганта - сетевое планирование. Какие разделы доки надо перечитать? с чего нАчать? Пример графика приведите, а то лично я не в курсе что это такое. http://www.dw-extreme.com/images/planfullscr.jpg ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2005, 14:31 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
sboykoКакие разделы доки надо перечитать? с чего нАчать? Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2005, 14:42 |
|
И снова перерисовка...
|
|||
---|---|---|---|
#18+
Вот примитивный пример рисования в Datawindow (написанный на РВ4 :-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2005, 19:52 |
|
|
start [/forum/search_topic.php?author=flex0r&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
84ms |
get tp. blocked users: |
1ms |
others: | 695ms |
total: | 901ms |
0 / 0 |