Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/10: Рейтинг темы: голосов - 10, средняя оценка - 4.70
serg55
2 / 2 / 1
Регистрация: 15.08.2014
Сообщений: 170
#1

Динамическое создание Series в TChart в динамически созданных формах

11.03.2015, 21:00. Просмотров 1754. Ответов 10
Метки нет (Все метки)

Может конечно таких тем много, и у меня в принципе получается создать Series динамически, но я с конкретикой
Объясните мне пожалуйста разницу в коде:

Delphi
1
2
3
4
5
6
7
ls : TLineSeries;
begin
  ls := TLineSeries.Create(PointToForm.Chart1); // PointToForm - ссылка на ранее динамически созданную форму. Все 
                                                                 //ссылки у меня сохранены в TList
  PointToForm.Chart1.AddSeries(ls);
  ls.AddXY(1,2,' ',clRed);
end;
Так у меня создается новая серия в TChart1, который уже имеется, когда форма создается динамически.
Вопрос первый: кто является родителем в этом случае для новой серии ? Как в этом коде, в строке с конструктором Create указать родителя (параметр Owner - Self и т.д.) ?

Есть еще один вариант:
Delphi
1
ls := PointToForm.Chart1.AddSeries(TLineSeries.Create(Self));
Этот код я тоже нагуглил т.е. говорят что он должен работать. Тут, в отличии от первого варианта, можно указать Self - сам себе родитель. Но прикол в том что код у меня не работает. Компилятор пишет что TLineSeries и TChart1 не совместимые типы.
Вопрос два: что в этом коде не правильно ?
Вопрос три: какой из этих вариантов лучше использовать ?

Добавлено через 43 минуты
И еще подскажите хранит ли список серий TChart ? Как узнать их количество и обратиться к конкретной серии ? Например, обзываю серию Sin. И затем могу программно к ней обратиться. Где у меня будет соответствие имен сериям ? Пока вариант делать свой список с именами серий т.е. сохранять их ссылки при создании в массив или TList. Посоветуйте кто делал похожие задачи ?

Добавлено через 24 минуты
Цитата Сообщение от serg55 Посмотреть сообщение
Вопрос первый: кто является родителем в этом случае для новой серии ?
С этим вроде понятно стало. Родитель Chart1 формы PointToForm. Т.е. можно поменять на self, т.к. я потом все равно добавляю серию в PointToForm.Chart1. Правильно думаю ?

Добавлено через 3 часа 51 минуту
Цитата Сообщение от serg55 Посмотреть сообщение
Вопрос два: что в этом коде не правильно ?
Глупый был вопрос ) Просто не понятно почему во втором варианте для создания LineSeries нужна переменная ls типа TChart а не TLineSeries.

Добавлено через 53 минуты
Цитата Сообщение от serg55 Посмотреть сообщение
Вопрос три: какой из этих вариантов лучше использовать ?
Что то я наверно с утра не выспался сегодня, все тут понятно. Одно и тоже спросил два раза.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2015, 21:00
Ответы с готовыми решениями:

Создание событий для динамически созданных объектов
procedure Addrich; {добавление компонента на экран } begin...

Динамическое создание Графиков TChart
Здравствуйте. Имеется такая программа, которая при нажатии на кнопку "Добавить...

Динамическое создание и уничтожение TChart
Доброго времени суток! Проблема с уничтожением динамически созданного chart....

Динамическое создание компонентов на динамически созданом компоненте
Есть процедура, которая динамически создает панель. Нужно сделать так, что бы...

Динамическое создание TEdit на динамически созданной форме
На основной форме Form1 после определенного события динамически создаю форму...

10
Игорь[Igor]
716 / 468 / 128
Регистрация: 24.12.2008
Сообщений: 3,910
11.03.2015, 23:13 #2
Всему виной метель и капель
0
serg55
2 / 2 / 1
Регистрация: 15.08.2014
Сообщений: 170
12.03.2015, 09:54  [ТС] #3
Еще глупый вопрос )
создаём серию
Delphi
1
2
 Series := TFastLineSeries.Create(Chart1); //тип FastLine
 Series.ParentChart := Chart1;             //назначение родительского графика
В первой строке мы разве не указали родителя ? Зачем вторая строка в коде ?
0
Игорь[Igor]
716 / 468 / 128
Регистрация: 24.12.2008
Сообщений: 3,910
12.03.2015, 10:28 #4
Series.ParentChart := Chart1; это значит что график будет рисоваться на Chart1, а не на каком то другом.
А тут Series := TFastLineSeries.Create(Chart1); создаеш Series и кто его родитель, но не указано что он будет рисоваться на каком-то чарте родителем может быть и форма и значение nil может там стоять.
Как-то так в общих чертах.

Добавлено через 55 секунд
В общем это для конструктора дизайна где будет лежать Series, а ты создаеш его динамически
0
serg55
2 / 2 / 1
Регистрация: 15.08.2014
Сообщений: 170
12.03.2015, 10:37  [ТС] #5
А можно вместо указания родителя
Delphi
1
Series.ParentChart := Chart1;
делать так (строка со стрелкой)
Delphi
1
2
3
4
5
6
7
ls : TLineSeries;
begin
  ls := TLineSeries.Create(PointToForm.Chart1); // PointToForm - ссылка на ранее динамически созданную форму. Все 
                                                                //ссылки у меня сохранены в TList
  PointToForm.Chart1.AddSeries(ls);    <----------
  ls.AddXY(1,2,' ',clRed);
end;
0
Игорь[Igor]
716 / 468 / 128
Регистрация: 24.12.2008
Сообщений: 3,910
12.03.2015, 10:45 #6
Можно

Добавлено через 57 секунд
У чарта есть Chart1.SeriesList
0
serg55
2 / 2 / 1
Регистрация: 15.08.2014
Сообщений: 170
12.03.2015, 11:02  [ТС] #7
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
У чарта есть Chart1.SeriesList
Это я знаю ) Просто мне нужно сохранять ссылки на Series в структуре, характеризующей соответствующий график. В том числе номер серии, в которой он создан.

Добавлено через 1 минуту
Хотя надо подумать еще. Кажись намудрил чуток

Добавлено через 8 минут
А тогда у меня вопрос возникает. Если у меня допустим 4 серии. В листе номера 0 ... 3. Я закрываю допустим серию №2. Тогда лист у меня поплыл ? То есть второй серией станет серия № 3 ? Или в списке будет отсутствовать номер 2 и при создании новой серии (пятой по счету) появиться номер 4 в листе ? Так ? А если сохранять ссылки такого косяка не будет.
0
northener
пофигист широкого профиля
3256 / 2308 / 629
Регистрация: 15.07.2013
Сообщений: 13,640
12.03.2015, 11:05 #8
Цитата Сообщение от serg55 Посмотреть сообщение
А если сохранять ссылки такого косяка не будет.
Точно. Косяки тогда другие будут.
0
serg55
2 / 2 / 1
Регистрация: 15.08.2014
Сообщений: 170
12.03.2015, 11:11  [ТС] #9
Цитата Сообщение от northener Посмотреть сообщение
Точно. Косяки тогда другие будут.
А какие ? Не подскажешь ? Ссылка то она вечная. Вроде как
0
northener
пофигист широкого профиля
3256 / 2308 / 629
Регистрация: 15.07.2013
Сообщений: 13,640
12.03.2015, 11:20 #10
Цитата Сообщение от serg55 Посмотреть сообщение
Ссылка то она вечная. Вроде как
Цитата Сообщение от serg55 Посмотреть сообщение
Я закрываю допустим серию №2.
И куда теперь указывает вечная ссылка?
0
serg55
2 / 2 / 1
Регистрация: 15.08.2014
Сообщений: 170
13.03.2015, 09:37  [ТС] #11
Цитата Сообщение от northener Посмотреть сообщение
И куда теперь указывает вечная ссылка?
Так я её соответственно изничтожу. Она мне больше не нужна.

Добавлено через 22 часа 15 минут
Еще вопрос. Теперь создаю Series в TChart' те.
Вопрос в родителе ) Ниже функция создания Серии. Можно ли назначить её родителем саму себя ? Мне это нужно чтобы легко было её уничтожить, оставив на Чарте другие Серии.
Delphi
1
2
3
4
5
6
7
function CreateSeriesNew() : integer;
var
LineSer : TLineSeries;
begin;
   LineSer := TLineSeries.Create(LineSer); //родителем является сам для себя
     ... ну и далее....
end;
0
13.03.2015, 09:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2015, 09:37

Динамическое создание объектов на динамически созданной форме)
есть код: procedure TForm1.actrprtvrExecute(Sender: TObject); var ...

TCHART (Pie Series)
Доброго времени суток! Подскажите пожалуйста, где найти информацию о данном...

TChart изменить положение Series
Как в TChart изменить положение Series, чтоб они были снизу а не справа?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru