Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
Jonnik
Member

Откуда:
Сообщений: 168
Хочу сам нарисовать диаграмму Ганта. Готовые варианты не подошли.

Нужно отображать что угодно, но в виде красивых прямоугольников, которые можно будет перемещать, менять размеры. При наведение мышки показывать подсказки. На них можно написать текст. В общем нужен нужен какой-то объект.
Грубо говоря можно и те же панели использовать, но при большом количестве начинает тормозить форма.

Посоветуйте, что можно разместить, а может и в каком контейнере на форме в большом количестве, что бы при этом эти объекты быстро рисовались и при количестве в 10 000 штук форма не зависала при прорисовки?
Хорошо, если еще и будет возможность решить отрисовку координатной сетки.
Хочется их сразу нарисовать, что бы не заниматься перерисовкой объектов при скролинге.
22 май 20, 19:57    [22137894]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
asviridenkov
Member

Откуда:
Сообщений: 4002
Jonnik,

Реально пользователь будет работать с диаграммой в 10 тыс элементов?
22 май 20, 20:02    [22137899]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
Jonnik
Member

Откуда:
Сообщений: 168
asviridenkov
Jonnik,

Реально пользователь будет работать с диаграммой в 10 тыс элементов?


Смотря какая детализация нужна будет. Это чтобы все нарисовать и не заниматься перерисовкой при скролинге.
22 май 20, 20:05    [22137902]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31169
похоже Андрей Игоревич нашел себе сотрудника...
22 май 20, 20:09    [22137907]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
ъъъъъ
Member

Откуда:
Сообщений: 701
Jonnik
а может и в каком контейнере

Ты же не будешь, например, MS Excel свой создавать, а попытаешься использовать то, что есть?

Может, возьми MS Project, и как COM - сервер его? Там эти диаграммы так отточены, что ты такого и близко не сделаешь.
22 май 20, 20:42    [22137929]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
bk0010
Member

Откуда:
Сообщений: 4940
Jonnik
В общем нужен нужен какой-то объект.
Грубо говоря можно и те же панели использовать, но при большом количестве начинает тормозить форма.
Посмотреть, как диаграммы Ганта в TChart сделаны не пробовали (он вроде в исходниках шел)?
22 май 20, 20:57    [22137934]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
asviridenkov
Member

Откуда:
Сообщений: 4002
Jonnik,

Как раз чтоб все быстро работало, придется при скроллинге отрисовывать только нужное.
Вообще, это задача не для новичка.
22 май 20, 21:06    [22137935]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
Jonnik
Member

Откуда:
Сообщений: 168
ъъъъъ
Jonnik
а может и в каком контейнере

Ты же не будешь, например, MS Excel свой создавать, а попытаешься использовать то, что есть?

Может, возьми MS Project, и как COM - сервер его? Там эти диаграммы так отточены, что ты такого и близко не сделаешь.


Это все должно работать без всяких установленных дополнительных программ.
Мне не надо весь функционал, большая часть его просто не нужна.
Надо только полоски рисовать красиво и так где мне надо и в нужном виде. Существующие механизмы или слишком простые или слишком навороченные, что тормозят при небольшом наборе данных как например DevExpress. Это все до меня выяснили другие люди и я сам с этим столкнулся.

Про прорисовку только видимой части я и так знаю. Просто хочу ее избежать если это возможно.
22 май 20, 22:02    [22137958]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
Док
Member

Откуда: Казань
Сообщений: 6670
Мимопроходящий
похоже Андрей Игоревич нашел себе сотрудника...

да ты прям мысли чужие на лету читаешь
22 май 20, 22:04    [22137960]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
Док
Member

Откуда: Казань
Сообщений: 6670
Jonnik
Надо только полоски рисовать красиво и так где мне надо и в нужном виде.

тогда тебе сюда. Судя по окончанию топика автору это удалось очень неплохо.

Сообщение было отредактировано: 22 май 20, 22:04
22 май 20, 22:05    [22137961]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
L1G
Member

Откуда:
Сообщений: 126
Jonnik,
вообще, всё что нужно для рисования чего угодно - это TPaintBox и его Canvas.
ну, еще парочку TScrollBar для полного счастья.
Однако, будет непросто "перемещать, менять размеры", "При наведение мышки" что-то делать. Тут не обойтись без своих кастомных объектов, хранящих координаты, цвета и т.п.
(Возможно, и хранить их придется не в плоском списке, а в иерархическом дереве, но не факт.)
В общем, "задача не для новичка" - это точно.

Я бы прикинул возможность использования TShape или своих наследников от TGraphicControl (всё-таки "легче" и (должны быть) быстрее, чем TControl (и любые его наследники)).
Сам, правда, так и не попробовал его в деле...

"Хочется их сразу нарисовать, что бы не заниматься перерисовкой объектов при скролинге." - для программиста мысль бредовая. Это не тебе придется "заниматься их перерисовкой при скроллинге" много раз, достаточно всего 1 раз научить это делать компьютер. Собственно, код отрисовки в любом случае одинаковый. (Как, по-твоему, работают все эти "волшебные" компоненты? Где-то внутри они таки перерисовываются при скроллинге, но программиста это не волнует.)

Сообщение было отредактировано: 22 май 20, 22:31
22 май 20, 22:30    [22137977]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
L1G
Member

Откуда:
Сообщений: 126
быстрее, чем TControl TWinControl
22 май 20, 22:44    [22137984]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
Jonnik
Member

Откуда:
Сообщений: 168
L1G
Jonnik,
вообще, всё что нужно для рисования чего угодно - это TPaintBox и его Canvas.
ну, еще парочку TScrollBar для полного счастья.
Однако, будет непросто "перемещать, менять размеры", "При наведение мышки" что-то делать. Тут не обойтись без своих кастомных объектов, хранящих координаты, цвета и т.п.
(Возможно, и хранить их придется не в плоском списке, а в иерархическом дереве, но не факт.)
В общем, "задача не для новичка" - это точно.

Я бы прикинул возможность использования TShape или своих наследников от TGraphicControl (всё-таки "легче" и (должны быть) быстрее, чем TControl (и любые его наследники)).
Сам, правда, так и не попробовал его в деле...

"Хочется их сразу нарисовать, что бы не заниматься перерисовкой объектов при скролинге." - для программиста мысль бредовая. Это не тебе придется "заниматься их перерисовкой при скроллинге" много раз, достаточно всего 1 раз научить это делать компьютер. Собственно, код отрисовки в любом случае одинаковый. (Как, по-твоему, работают все эти "волшебные" компоненты? Где-то внутри они таки перерисовываются при скроллинге, но программиста это не волнует.)


Да, TShape тоже был в планах проверить.
Лучше иметь какой-то объект, чем просто рисунок. С объектом проще работать.
Была бы перерисовка проста, то я бы сразу ее и сделал. Это кажется, что она простая. Но там будет много задач в ней тоже.
Перед реализаций таких вещей надо собрать информацию, а потом делать.
22 май 20, 22:54    [22137987]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
L1G
Member

Откуда:
Сообщений: 126
Jonnik
Лучше иметь какой-то объект, чем просто рисунок. С объектом проще работать.
Требуемые объекты не так уж сложно реализовать самому.
Если до сих пор не пробовали - хороший повод начать.
Delphi is Object-Oriented Programming language.
22 май 20, 23:29    [22138001]     Ответить | Цитировать Сообщить модератору
 Re: Как нарисовать диаграмму Ганта. Отображение около 10000 элементов на форме.  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11780
Jonnik
Нужно отображать что угодно, но в виде красивых прямоугольников, которые можно будет перемещать, менять размеры. При наведение мышки показывать подсказки. На них можно написать текст.
TChart

Jonnik
10 000 штук форма не зависала при прорисовки?
Jonnik
Хочется их сразу нарисовать, что бы не заниматься перерисовкой объектов при скролинге.
Так не бывает. Если вы используете 10000 объектов, а потом делаете сролл/зуум, значит кто-то должен пересчитать 10000 координат и заново все перерисовать. Это всегда будет долго.

Вам нужно рисовать не все объекты, а только те, которые видит пользователь
25 май 20, 14:45    [22139065]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить