Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
serg55
2 / 2 / 1
Регистрация: 15.08.2014
Сообщений: 170
#1

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

11.03.2015, 21:00. Просмотров 1701. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Динамическое создание Series в TChart в динамически созданных формах (Delphi):

Создание событий для динамически созданных объектов - Delphi
procedure Addrich; {добавление компонента на экран } begin rich1:=TRichedit.Create(form2.scrollbox1); ...

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

Динамическое создание и уничтожение TChart - Delphi
Доброго времени суток! Проблема с уничтожением динамически созданного chart. Имеется: var Ch: TPoint; c:TChart; ... ...

Динамическое создание объектов на динамически созданной форме) - Delphi
есть код: procedure TForm1.actrprtvrExecute(Sender: TObject); var rfrm1:TForm; r1edit1:TEdit; r1lbl:TLabel; begin ...

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

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

10
Игорь[Igor]
716 / 468 / 53
Регистрация: 24.12.2008
Сообщений: 3,901
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 / 53
Регистрация: 24.12.2008
Сообщений: 3,901
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 / 53
Регистрация: 24.12.2008
Сообщений: 3,901
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
пофигист широкого профиля
3244 / 2296 / 496
Регистрация: 15.07.2013
Сообщений: 13,547
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
пофигист широкого профиля
3244 / 2296 / 496
Регистрация: 15.07.2013
Сообщений: 13,547
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
Привет! Вот еще темы с ответами:

TCHART (Pie Series) - Delphi
Доброго времени суток! Подскажите пожалуйста, где найти информацию о данном типе Series (Pie) ? Я гуглил, нашел только англоязычные...

Изменение цвета Series в TChart - Delphi
Подскажите у меня имеется Tchart1 TChart2 и TChart3. Как задать изменение цвета сразу всех графиков на одну кнопку? Для одного графика я...

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

Перешел с Win7 на Win8 и на всех созданных формах абракадабра - Delphi
На главной форме и дочерних, и на закладках для ввода информации много пояснений (использовал шрифт MS Sans Sehrif - и все было прекрасно,...


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

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

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