powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / И снова перерисовка...
25 сообщений из 36, страница 1 из 2
И снова перерисовка...
    #33171994
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем!

Была такая задача: нужно вывести на экран структуру некоторых объектов в виде схемы, отобразить их состояние (опрашивается или нет - выделение цветом по набору критериев) и позволить выполнить над ними набор действий - через меню (посмотреть разнообразную статистику, отредактировать параметры).
Было решено: сделать картинку с изображением всей извращенной структуры. В базу занести координаты объектов на картинке плюс поддерживаемые действия над каждым объектом. Для отображения состояния делался UserObject (подсказал народ на форуме, как сделать статикТекст прозрачным), собственно, для отображения остальной статистики тоже использовались ЮзерОбжекты, но моего производства.
Проблема 1: при перерисовке 30-40 объектов все мерзко дергается
Проблема 2: созданные позже объекты почему-то перенакрываются созданными ранее :( Как бы порешать еще и эту проблему??

Заранее спасибо!
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33172178
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А никак:-)
Я же говорил - в datawindow надо делать...
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33172448
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно это проблема винды она не любит когда много окон, а каждый ПБ объект в данном случае, если не ошибаюсь, есть виндючее окно. Хотя 30-40 это вроде не очень много. В таком случае ПБ не виноват и в нем ничего подправить нельзя. В нашем сишном приложении были аналогичные проблемы и решились после перехода к рисованию объектов руками в одном окне, это фактически то же что предлагает Филипп.

Если же винда не виновата и это проблема ПБ, то можно для перирисовки и движений объектов использовать виндючий АПИ, это несложно и должно помочь.
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33173857
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблему наложения удалось решить при помощи BringToTop динамических объектов в нужном порядке.

НО КАК ЖЕ ОНО ВСЕ ДЕРГАЕТСЯ!!! Не из-за BringToTop...
Как и раньше. Чего-то ничего в голову не лезет...
Наверное буду копать в сторону ВинАПИ... Мне то впринципе вполне устроило бы и просто рисование на картинке.
Млин :(
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33181871
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В свое время нужно было разрисовывать план помещения разными цветами, использовалась сишная DLL с функцией куда передавался массив координат из базы и цвет, а функция отрисовывала цветной многоугольник. Номера комнат были сверху ввиде статик текст, для возможности вызова контекстного меню. Было это во времена первых пней, и работало достаточно шустро.
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33206031
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А на чем велась перерисовка, если не секрет?? На чем-то ж функция должна была рисовать? Координат маловато... Если тупой вопрос - заранее звиняйте, я с С и ДЛЛками знаком только понаслышке, сам никогда ничего не делал... :(
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33206260
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoА на чем велась перерисовка, если не секрет?? На чем-то ж функция должна была рисовать? Координат маловато... Если тупой вопрос - заранее звиняйте, я с С и ДЛЛками знаком только понаслышке, сам никогда ничего не делал... :(
handle ей передается, на нем она и рисует. А уж чей это handle - это не ее дело :) кстати рисовать не обязательно на C, можно на том же Delphi и рисовать и в DLL или COM-сервер обвязать.
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33209692
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, думаю, есть смысл последовать совету Филиппа. Если 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 ...' ) в необходимом для меня порядке.
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33209775
Konstantin Goldobin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"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
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33209802
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, Константин, за желание помочь. К сожалению setPosition datawindow methodименно метод datawindow, а не его элементов.
Т.е. его можно использовать для изменения положения нескольких datawindow "друг относительно друга", а не для изменения внутри одного datawindow элементов "друг относительно друга".
Хотел бы я ошибаться ...
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33209816
Konstantin Goldobin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"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
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33210004
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин, спасибо. Где были мои глаза ?
Мне показалось, что я был внимателен, а сам ... . Правда теперь приобрел не плохой опыт в пересоздании объектов DW.
А вообще, спасибо этому форуму.
Когда работаешь вне коллектива программистов - только через форум и можно узнать в чем был не прав.
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33211304
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил - все замечательно. Но ! Если надо изменить раположение объектов в composite report, то тут все же приходится работать через пересоздание объектов dw.modify( 'Destroy ...') и dw.modify( 'Create ...')
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33211310
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorry - не указал, что в последнем случае dw - имеют тип DataWindowChild.
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33211466
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33221103
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мдямс... Похоже прийдется извращаться с динамическим созданием... Внутри ДатаВиндов...

На самом деле есть еще один ГРОМАДНЫЙ минус. В сегодняшней моей поделке каждый элемент на картинке - это объект. То есть, сам объект знает о том, что ему делать при нажатии на нем мышкой, при ресайзе... Больше всего мне кажется неприятность с нажатием мышкой на объекте. То есть отображением или еще какого-нибудь динамического меню, или нового объекта...

С этим наверное больше всего головной боли... А если попробовать посмотреть в сторону ДЛЛок? так не лучче/перспективнее? Как мнение посетителей? Потому что чуется мне, что на переход к динамическому ДВ прийдется ухайдохать немало времени... Так что если и убивать, то может уже на ДЛЛки?
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33221914
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoМдямс... Похоже прийдется извращаться с динамическим созданием... Внутри ДатаВиндов...
На самом деле есть еще один ГРОМАДНЫЙ минус. В сегодняшней моей поделке каждый элемент на картинке - это объект. То есть, сам объект знает о том, что ему делать при нажатии на нем мышкой, при ресайзе... Больше всего мне кажется неприятность с нажатием мышкой на объекте. То есть отображением или еще какого-нибудь динамического меню, или нового объекта...
С этим наверное больше всего головной боли?
Непонятно почему. Внутри ДатаВиндов каждый элемент на картинке - тоже может быть объектом.
Vadim RomanenkoА если попробовать посмотреть в сторону ДЛЛок? так не лучче/перспективнее? Как мнение посетителей? Потому что чуется мне, что на переход к динамическому ДВ прийдется ухайдохать немало времени... Так что если и убивать, то может уже на ДЛЛки?
Если б я тратил время, так это деньги на покупку компонента, который умеет Charting делать, а не на написание самопальных ДЛЛок...
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33222064
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппЕсли б я тратил время, так это деньги на покупку компонента, который умеет Charting делать, а не на написание самопальных ДЛЛок...
Поддерживаю, скорее всего можно найти подходящий ActiveX.
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33222477
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoНа самом деле есть еще один ГРОМАДНЫЙ минус. В сегодняшней моей поделке каждый элемент на картинке - это объект. То есть, сам объект знает о том, что ему делать при нажатии на нем мышкой, при ресайзе... Больше всего мне кажется неприятность с нажатием мышкой на объекте. То есть отображением или еще какого-нибудь динамического меню, или нового объекта...Мне кажется, что вы преувеличиваете трудности.
Вам, на мой взгляд, всего-навсего, надо сделать примерно следующее:
1. Создать иерархию невизуальных объектов, которые будут обеспечивать функциональность, аналогичную реализованной в ваших нынешних визуальных объектах, с той только разницей, что предок ваших nvo должен иметь переменную экземпляра, идентифицирующую отрисованный на DW объект (чаще всего это будет прямоугольник или static text). Этот невизуальноый объект должен иметь методы, позволяющие манипулировать с объектом визуальным.
2. В объекте DW, на котором все это будет отображаться, организовать обработку пользовательских событий, которые просто-напросто должны рассылаться невизуальным объектам-приемникам, которые уже имеют необходимый вам функционал (см. п.1). Разумеется, что должен существовать менеджер этих невизуальных объектов, но на его роль, в первом приближении, подойдет само DW. Т.е., создание визуального объекта на DW должно сопровождаться появлением очередного элемента в массиве элементов невизуальных.

Вот, собственно говоря, и все... Насколько я понимаю, при правильном подходе к проектированию имевшихся у вас объектов, перевод функционала займет от силы неделю (это я полагаю, взял с большим запасом :-)


Vadim RomanenkoС этим наверное больше всего головной боли... А если попробовать посмотреть в сторону ДЛЛок? так не лучче/перспективнее? Как мнение посетителей? Потому что чуется мне, что на переход к динамическому ДВ прийдется ухайдохать немало времени... Так что если и убивать, то может уже на ДЛЛки? Солидарен с Филиппом
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33222680
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые коллеги!
совсем глупый вопрос - а как вообще рисовать из DW?
плохо представляю себе процесс рисования -то есть никак.
а надо нарисовать график Ганта - сетевое планирование. Какие разделы доки надо перечитать? с чего нАчать?
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33223069
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sboykoа надо нарисовать график Ганта - сетевое планирование. Какие разделы доки надо перечитать? с чего нАчать?
Пример графика приведите, а то лично я не в курсе что это такое.
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33223199
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк sboykoа надо нарисовать график Ганта - сетевое планирование. Какие разделы доки надо перечитать? с чего нАчать?
Пример графика приведите, а то лично я не в курсе что это такое. http://www.dw-extreme.com/images/planfullscr.jpg
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33223234
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sboykoКакие разделы доки надо перечитать? с чего нАчать?
Код: plaintext
1.
2.
3.
dw_1.modify("create rectangle(...)")
dw_1.modify("create text(...)")
dw_1.modify("create line(...)")
dw_1.modify("create ellipse(...)")
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33224055
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот примитивный пример рисования в Datawindow (написанный на РВ4 :-)))
...
Рейтинг: 0 / 0
И снова перерисовка...
    #33224063
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть то, что один умный человек (давным давно) сваял на основе выше привидённого примитивного примера, но сюда не лезет (216 кб)...
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / И снова перерисовка...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]