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

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

Баг 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;

Может так правилнее...


Наверх

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