![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Баг Chart'а или что? [D7, WinXP]
rolex © (2005-11-03 22:54:00)Если задать координату Y вылетает Error Access Violation...
Ставлю точки в Charte функцией Series1.AddXY, но если координата Y "большое" число (к примеру у меня 5000) - вылетает ошибка.
К примеру, вот код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Series1.Clear;
Form1.Series1.AddXY(StrToFloat('1'),StrToFloat('5000'),'',clGreen);
end;
Вылетает ошибка.
Прошу помощи.
lookin (2005-11-04 22:34:00) [1]Series.Delete(0)
rolex (2005-11-04 21:45:00) [2]
> lookin © (04.11.05 18:25) [9]
> В пустую серию можно добавить точку 0,0, потом нужную (с
> любой координатой), потом удалить точку 0,0. Кажется, этот
> баг я обхожу именно так...
Я это тоже заметил. Но я не понял как удалить точку, может ты знаешь?
lookin (2005-11-04 18:25:00) [3]В пустую серию можно добавить точку 0,0, потом нужную (с любой координатой), потом удалить точку 0,0. Кажется, этот баг я обхожу именно так...
gdaujk (2005-11-04 13:38:00) [4]Tonich
Попробуй запуститьprocedure TForm1.Button1Clickв моём варианте, но с Chart.LeftAxis.Increment := 0 и значением по этой оси 5000, и тебе всё станет ясно...
PS: у меня вылетала ошибка уже при 1800...
Tonich (2005-11-04 13:11:00) [5]что-то вы гоните, я на чарте откладывал сависимость одного параметра от юлианской дата. И юлианские даты были больше чем на 2 порядка ваших 5000 тысяч и нифига
gdaujk (2005-11-04 12:49:00) [6]Increment - это минимальный шаг между двумя засечками-подписями на оси. Если для размещения подписей через этот шаг места не хватает, TChart вычисляет больший, допустимый шаг. С помощью него можно регулировать величину ячеек сетки.
PS: Я не переводчик, хоть иногда заглядывайте в справку...
rolex (2005-11-04 11:03:00) [7]Добавил:
Chart.LeftAxis.Increment := 1;
Всё заработало. А что это за свойство Chart.LeftAxis.Increment ? Что оно меняет?
Kolan (2005-11-04 09:54:00) [8]Это глюк чарта. У меня было не раз. Для меня приемлемо было поделить число на 1000...
gdaujk (2005-11-04 06:06:00) [9]Дело совсем не в разнице TLineSeries и TChartLine. Сделай так:
procedure TForm1.Button1Click(Sender: TObject);
begin
Series1.Clear;
Chart.LeftAxis.Increment := ЧИСЛО_БОЛЬШЕ_НУЛЯ;
Series1.AddXY(StrToFloat('1'),StrToFloat('5000'),'',clGreen);
end;
</COD E>
Chart - твой чарт, ЧИСЛО_БОЛЬШЕ_НУЛЯ - число больше нуля :-), я брал 0,2, и у меня всё выходило. Можно взять и большее число. Изначально оно равно нулю. Можно менять Increment и не в Run Time, задав его в настройках TChart'а;
gdaujk (2005-11-04 05:34:00) [10]Series1 - это TLineSeries. В справке же по TChart сказано, что AddXY - метод TChartLine, то есть обращаться наверное нужно именно к Chart.Series[НОМЕР_ЛИНИИ], который и является TChartLine.
gdaujk (2005-11-04 05:23:00) [11]Что за ошибка-то вылетает?
PS: Я обычно обращаюсь к линиям чарта не через Series, а сл. образом (выш случай):
procedure TForm1.Button1Click(Sender: TObject);
begin
Chart.Series[НОМЕР_ЛИНИИ].Clear;
Chart.Series[НОМЕР_ЛИНИИ].AddXY(X, Y, ЦВЕТ);
end;
Может так правилнее...