Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.25;
Скачать: CL | DM;

Вниз

Снова то же вопрос: полярные диаграммы   Найти похожие ветки 

 
тихий вовочка ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.043 c
2-1133938393
Sung
2005-12-07 09:53
2005.12.25
Условное описание


3-1131260903
root
2005-11-06 10:08
2005.12.25
SQL и фрмат даты при обращении


3-1130937681
Александр_н
2005-11-02 16:21
2005.12.25
Получение информации о Primary Key


14-1133418173
syte_ser78
2005-12-01 09:22
2005.12.25
С первым днем зимы вас, господа!


2-1133880213
p_evghenii
2005-12-06 17:43
2005.12.25
Запуск программы от имени