Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Добавление значения в TeeChart [D7, WinXP]


Страницы:   1 2

Incognito ©   (2006-10-16 22:39:00) 

Такой вопрос, для знатоков TChart.
Не нашел функции, позволяющей вставлять в серию значени после/перед значением с заданным индексом. Есть только Add, который добавляет все в конец.

Подскажите, пожалуйста, есть ли такая функция или писать самому...


Kolan   (2006-10-17 00:07:00) [1]


> посмотри

Имелся в виду хелп... :)


Incognito   (2006-10-17 00:04:00) [2]

Да впринципе все как надо, дата выводится в качестве лэйбла, интервалы времени в файле равные, так что не критично.

Хотя дата тоже в качестве аргумента канает. Только что проверил.


Kolan   (2006-10-16 23:50:00) [3]


> Incognito   (16.10.06 23:48) [25]

Что-то в голове сидит, что Чарт дружит с датой посмотри может че найдешь...


Incognito   (2006-10-16 23:48:00) [4]

Точно ) просто i ))) огромное спасибо!


Kolan   (2006-10-16 23:43:00) [5]


> newHistory.DocumentElement.ChildNodes.Count-1 - i

Ну просчитай правильно индекс. Просто I вроде. Проверь..


Incognito   (2006-10-16 23:40:00) [6]

да, с датой не прокатило. Твой вариант с
newHistory.DocumentElement.ChildNodes.Count-1 - i
кажется должен работать, ан нет - все равно задом наперд получается . не пойму почему. вроде величина увеличиваться должна, т.к. цикл обратный.


Kolan   (2006-10-16 23:37:00) [7]


> chart.Series[0].AddXY(data.time, data.karma, TimeToStr(data.
> time));

Как-то так. Только с датой что делать надо подумать, чарт с не кажется дружит


Incognito   (2006-10-16 23:33:00) [8]

ага, понял, т.е. если по оси х время то нужно вроде того:

chart.Series[0].AddXY(data.time, data.karma, TimeToStr(data.time));

Щас опробирую


Kolan   (2006-10-16 23:31:00) [9]

Наоборот:
chart.Series[0].AddXY(номер последней записи файла - I, data.value, TimeToStr(data.time));


Kolan   (2006-10-16 23:30:00) [10]

те как-то так:
chart.Series[0].Add XY(data.value, номер последней записи файла - I,TimeToStr(data.time));


Incognito   (2006-10-16 23:29:00) [11]

сорри... русские букивки не выдержали...  вписал для ясности куски на русском )

вообщем вот нормальный код:



var
 newHistory  : TXMLDocument;
 data        : THistoryData;
 lastDate    : TDateTime;
begin
 newHistory := TXMLDocument.Create(fmMain);
 lastDate := StrToDateTIme(newHistory.DocumentElement.ChildNodes[newHistory.DocumentElement.C hildNodes.Count-1].ChildNodes['time'].Text);
 for i:=newHistory.DocumentElement.ChildNodes.Count-1 downto 0 do
   begin
     data.karma := StrToInt(newHistory.DocumentElement.ChildNodes[i].ChildNodes['karma'].Text);
     data.votes := StrToInt(newHistory.DocumentElement.ChildNodes[i].ChildNodes['votes'].Text);
     chart.Series[0].Add(data.karma,TimeToStr(data.time));
     if (lastDate - data.time > 1) then break ;
   end;


Карма это да.... как раз то из чего нужно построить график )


Kolan   (2006-10-16 23:28:00) [12]

Ааа  ты Add делаешь а не AddXY;
Ну  ты же добавляешь только координату Y, а откуда берется Х - правильно вычисляется TCharto'м. Те берется по порядку

Пользуй AddXYи явно задавай X.


Incognito   (2006-10-16 23:25:00) [13]

Серия типа TLineSeries

Нашел какой-то загадочную процедуру chart.Series[0].AddValue(ValueIndex : integer). Не в курсе чем занимается?

Серия типа TLineSeries;


Kolan   (2006-10-16 23:24:00) [14]


> data

Это что? - твое? Код давай GetValue

karma- медитируешь? :)


Kolan   (2006-10-16 23:23:00) [15]

А кого типа серия? У TCustomSerie Add(X, Y: Double);


Incognito   (2006-10-16 23:21:00) [16]

но при таком раскладе, как я уже говорил, в чарте все получается естественно задом наперед.


Incognito   (2006-10-16 23:20:00) [17]

Вообще, задача то заключается в том, чтобы загрузить в чарт данные за последние Х дней... Мне решение представляется вот в таком виде:


var
lastDate : TDateTime;
log : TXMLDocument;

....

lastDate := дата последний записи;

for i:=номер последней записи файла downto 0 do
  begin
     data.time  := StrToDateTIme( log....[i].ChildNodes['time'].Text);
     data.karma := StrToInt(log...[i].ChildNodes['value'].Text);
     chart.Series[0].Add(data.value,TimeToStr(data.time));
     if (lastDate - data.time > 1) then break ; // Если разница между датой последней запии и текущей достигает день и более то цикл прерывается
  end;


Loginov Dmitry   (2006-10-16 23:09:00) [18]

Incognito   (16.10.06 23:01) [7]
но это уже дополнительные трудозатраты, лишние переменные.. хоть и не критично, но все же


вот лентяй %)


Kolan   (2006-10-16 23:08:00) [19]


> вообщем, чувствую, массив придется заводить... (

Ну дело твое. Только ошибка гдето сидит и он тебе не поможет...
1. Пример строки файла сюда
2. Точку остнава на Add();. И Х У тоже сюда перепеши


Incognito   (2006-10-16 23:06:00) [20]

вообщем, чувствую, массив придется заводить... (


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо