Dimon.Ru |
Отправлено: 03.08.2006, 14:13 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
Здравствуйте!
У меня затык с динамическим созданием Series в TChart...
Добавляю так:
CODE | void *q;
int a;
a=Chart->SeriesList->Add(q); |
тут компилятор все вроде проглатывает. и я получаю номер добавленной серии (как мне кажется).
Потом пытаюсь обратиться к серии
CODE | Chart->SeriesList->Series[a]->AddXY(...); |
или
CODE | Chart->Series[a]->AddXY(...); |
Ну и все такое...
и получаю Access Violation....
Серии данных мне нужно создавать динамически и это принципиально!
Примеров найти не могу...
Подскажите, как правильно создавать Series и как к ним правильно обращаться?
Спасибо. |
|
Dimon.Ru |
Отправлено: 03.08.2006, 14:24 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
Вроде бы как нашел...
Вот здесь: Графики( TChart ) — использование |
|
Guest |
Отправлено: 03.08.2006, 15:03 |
|
Не зарегистрирован
|
CODE |
void __fastcall TF_SNCChart::Button1Click(TObject *Sender)
{
TLineSeries *ser = new TLineSeries(this);
ser->ParentChart = Chart_SNC;
ser->HorizAxis = aTopAxis;
ser->VertAxis = aRightAxis;
ser->AddXY(1,8, "", clTeeColor);
ser->AddXY(2,3, "", clTeeColor);
ser->AddXY(3,7, "", clTeeColor);
ShowMessage(Chart_SNC->SeriesList->Count);
}
| |
|
Dimon.Ru |
Отправлено: 04.08.2006, 08:44 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
Спасибо.
Вот этот фрагмент обязательно надо писать?
CODE |
ser->ParentChart = Chart_SNC;
ser->HorizAxis = aTopAxis;
ser->VertAxis = aRightAxis;
|
Может быть поэтому у меня вылазиет Access Violation???
Мне вообще-то нужно создавать несколько серий данных.
Я пишу вот так:
CODE |
int qj=10, qtt=30;
TChartSeries** NewSeries;
NewSeries = NULL;
NewSeries = new TChartSeries*[qj];
for(int j=0; j<qj; j++)
{
NewSeries[j] = new TChartSeries(this);
NewSeries[j]->Name = "Front_"+IntToStr(j);
int Number=OtherGrafixChart->SeriesList->Add(NewSeries[j]);
for(int t=0; t<qtt; t++)
OtherGrafixChart->SeriesList->Series[j]->AddXY(TauF[t],Front[j][t],"",clBlack);
}
|
Массивы TauF,Front есть.
Все вроде бы выполняется без ошибок, но потом возникает AV....
Помогите разобраться, пожалуйста. |
|
Guest |
Отправлено: 04.08.2006, 09:15 |
|
Не зарегистрирован
|
QUOTE (Dimon.Ru @ 04/08/2006, 08:44) |
Вот этот фрагмент обязательно надо писать?
CODE |
ser->ParentChart = Chart_SNC;
ser->HorizAxis = aTopAxis;
ser->VertAxis = aRightAxis;
|
|
Не весь.
ser->ParentChart = Chart_SNC; — обязательно
ser->HorizAxis = aTopAxis; — по желанию и так как вам надо
ser->VertAxis = aRightAxis; — по желанию и так как вам надо
Про парент прочтите в help. Там есть еще другой способ, но главное:
серии на chart НЕ добавляются при помощи SeriesList->Add
для этой операции есть специальный метод и способ.
Кстати, все это есть в хелпе. |
|
Dimon.Ru |
Отправлено: 04.08.2006, 09:37 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
Спасибо. В Helpe-то может и есть, но у меня Builder 5й, ломаный. не всё в справке есть (( соответственно примеров — тоже нет.
Встроенная справка — это то, куда я первым делом полез...
Потом тока сюда...
Еще вопросик: Вы использыете TLineSeries. А TChartSeries не подходит?
Мой код, что бы работал, надо переписать примерно так:
CODE |
int qj=10, qtt=30;
TLineSeries** NewSeries;
NewSeries = NULL;
NewSeries = new TLineSeries*[qj];
for(int j=0; j<qj; j++)
{
NewSeries[j] = new TLineSeries(this);
NewSeries[j]->Name = "Front_"+IntToStr(j);
NewSeries[j]->ParentChart = OtherGrafixChart;
for(int t=0; t<qtt; t++)
OtherGrafixChart->Series[j]->AddXY(TauF[t],Front[j][t],"",clBlack);
}
|
Я Вас правильно понял?
Отредактировано Dimon.Ru — 04/08/2006, 09:44 |
|
Guest |
Отправлено: 04.08.2006, 10:09 |
|
Не зарегистрирован
|
У меня то же 5-й ломаный. Help rar 15M, отдать не жалко.
>Вы использыете TLineSeries. А TChartSeries не подходит?
Думаю подходит. TLineSeries — была первая в списке.
>Мой код, что бы работал, надо переписать примерно так:
Вам виднее, главное использовать ParentChart.
Из приведенного куска я не вижу смысла в использовании TLineSeries** NewSeries;. Список итак накпливается в OtherGrafixChart->SeriesList |
|
Dimon.Ru |
Отправлено: 04.08.2006, 10:25 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
QUOTE | Help rar 15M, отдать не жалко |
15M боюсь у меня ни один ящик не выдержит...
И как я понял, если мне нужно добавить несколько series, то мне не обязательно создавать массив? можно создать один элемент и добавлять его последовательно? В ТЧарте будут создаваться новые элементы?
Отредактировано Dimon.Ru — 04/08/2006, 11:27 |
|
Guest |
Отправлено: 04.08.2006, 11:00 |
|
Не зарегистрирован
|
CODE |
int qj=10, qtt=30;
for(int j=0; j<qj; j++)
{
T_???_Series* ser = new T_???_Series(this);
ser->ParentChart = OtherGrafixChart;
for(int t=0; t<qtt; t++)
ser->AddXY(TauF[t],Front[j][t],"",clBlack); // зависит от типа
}
|
BCB5 help (14M)
BCB5 Examples (3M)
В понедельник уберу. |
|
Dimon.Ru |
Отправлено: 04.08.2006, 13:09 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
все скачал. буду разбираться ))
еще раз: СПА-СИ-БО! |
|