Форум: "Компоненты";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизСнова то же вопрос: полярные диаграммы Найти похожие ветки
← →
тихий вовочка © (2005-05-03 07:46) [0]Постоянно в своих программах строю полярные диаграммы (зависимость величины от угла). Надоело это делать методом copy-paste. Хочу создать компонент. Теперь нужны ваши советы:
1)От кого наследоваться? TGraphicControl?
2)Делать отдельно PolarPlot а-ля TChart и коллекцию TSeries или все хранить вместе?
3)Как реализован TChart? Свои св-ва плюс коллекция указателей на TSeries?
Вобщем нужны ваши советы. Без компонента тоже можно жить, но может он не только мне потом пригодится.
← →
MBo © (2005-05-03 08:37) [1]В TeeChart Pro есть полярные диаграммы.
Если все же есть необходимость сделать свой компонент - TGraphicControl - подходящий предок.
← →
тихий вовочка © (2005-05-04 06:49) [2]Честно говоря на сайте steema нигде не могу найти упоминание о polar plot (или polar diagram).
Если вы про это, то это убого
http://www.steema.com/products/teechart/version5/whatsnew/images/Polar_Transparency.png
Могу показать, как рисует моя прога. Если будет интересно сделаю скриншот.
А по поводу TGraphicControl - у него по-моему закрыты OnMouseUp и Down? Сейчас нет среды под рукой - не посмотреть. И каков ваш совет с коллекциями?
← →
MBo © (2005-05-04 06:59) [3]>Если будет интересно сделаю скриншот
Да, можно посмотреть. Возможно, задачи специфические
← →
тихий вовочка © (2005-05-05 21:57) [4]Нет задачи не специфические. Завтра сделаю скриншот и покажу. Пока сделал наследника TGraphicControl и рисую в нем. Готов один метод AddArray (не считая Clear и настройки внешнего вида) Все работает и рисует. Возникли глупые вопросы: как сделать так, чтобы свойства родителя были видны в дизайнере? Например общий для всех Font. Пришлось определять свое св-во, что неудобно и нерационально.
← →
Юрий Зотов © (2005-05-06 02:46) [5]> как сделать так, чтобы свойства родителя были видны в
> дизайнере?
Просто опубликовать:
published
property MyProp;
...
end;
← →
Igorek © (2005-05-06 13:54) [6]тихий вовочка © (03.05.05 7:46)
Можно попробовать другой подход.
Если есть существующий компонент, который в принципе может нарисовать полярную диаграму, но интерфейс не подходит, тогда возьми ВинКонтрол, агрегируй в него сей компонент и сделай как child, что надо - выведи наружу, ну и добавь свою функциональность.
Можешь также сделать наследника TChart, перекрыть часть рисования и его агрегировать.
← →
тихий вовочка © (2005-05-08 11:28) [7]Вот тут две картинки: то, что было раньше и новый компонент в дизайн-тайме.
http://ksri.narod.ru/polarplot.html
Еще глупый вопрос:
У TGraphicControl вроде бы нет обработчиков OnMouseDown и OnMouseUp. Как это самому добавить? через декларирование обработчика WM_... или у кого-то из предков надо вытащить явно?
← →
MBo © (2005-05-08 11:53) [8]>Вот тут две картинки
честно говоря, не вижу ничего такого, чего нельзя сделать за пару минут в TeeChart
> Как это самому добавить?
Просто переобъявить свойства OnMouseDown и Up в published
← →
тихий вовочка © (2005-05-24 22:25) [9]В первом приближении сделал. Данные для каждого графика храню в наследниках CollectionItem"а, в самом компоненте их коллекция. Все строится нормально. Вот только три вопроса:
1)Как сделать так, чтобы при инсталляции package"а мой модуль был виден? А то компонент регистрируется, на форму кладется, а модуль при компиляции приходится вручную указывать.
2)Как реализовать автоматическое увеличение номеров Collectionitem"ов при их добавлении? Колдовать с FID? Я думал унаследую это автоматом от предка.
А у меня получается так: 0 - TPolarSeries, 1 - TPolarSeries. Хотелось бы TPolarSeries1, TPolarSeries2...
Вопросы может и глупые, но вы меня простите. Тяжело писать на C++ Builder наследника для VCL, написанного на Pascal (я в инете нигде вообще примера для Билдера по работе с коллекциями не нашел)
3)Не найдется ли знающий человек для инспекции моего кода? А то самому в стену головой биться надоело.
← →
тихий вовочка © (2005-05-27 20:47) [10]up
← →
Cobalt © (2005-05-28 14:35) [11]2 тихий вовочка © (24.05.05 22:25) [9]
Насчёт модуля(1) - очень странно - при бросании компонента модуль указывается при компиляции или сохранении - например бросьте Memeo - StdCtrls добавится при проверке синтаксиса. Может в пакадже что-то не так? регистрация происходит в том модуле, в котором объявлен компонент?
По (2) - TPolarSeries - это, кажется, класс?
а TPolarSeries1 - это тоже класс такой? Потомок? ;)
← →
тихий вовочка © (2005-05-29 14:49) [12]1)Уже разобрался
2)Я имею в виду вот что: при работе в дизайн-тайм для объектов-коллекций вызывается стандартный редактор среды. И если вы добавляете в коллекцию элемент, ему автоматом присваивается номер (а-ля Panel1, Panel2 и т.д) С моими TPolarSeries - наследниками TCollectionItem этого не происходит. Что именно я не унаследовал или не переопределил?
← →
тихий вовочка © (2005-06-02 23:23) [13]Мастера ушли в "потрепацца"? Кажется я не переопределил FID и поэтому каждый новый эл-т коллекции у меня имеет имя TPolarSeries 0
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.02 c