![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Добавление значения в TeeChart [D7, WinXP]
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]вообщем, чувствую, массив придется заводить... (