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

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

TChart [D7, XP]


Quattro ©   (2005-12-08 12:08:00) 

Господа!Помогите чем можете=))...не могу понять почему не работает вот этот кусок.....ничего не чертит....
procedure TValues.GrafDraw;
var
 a:integer;
 Temp:array [1..200] of double;
begin
Form1.Chart.Series[1].Clear;//î÷èñòêà
for a:=1 to Form1.Table.RowCount-1 do
begin
  if Form1.Table.Cells[1,a]'' then Temp[a]:=StrToFloat(Form1.Table.Cells[1,a])
  else
    Temp[a]:=StrToFloat(Form1.Table.Cells[2,a]);
end;
for a:=1 to Form1.Table.RowCount-1 do
  if Temp[a]>Temp[a+1] then Temp[a+1]:=Temp[a];
Form1.Chart.LeftAxis.Maximum:=Temp[Form1.Table.RowCount-1]+50;
for a:=4 to Form1.Table.RowCount-1 do
begin
  Form1.Chart.Series[1].Add(StrToFloat(Form1.Table.Cells[2,a]),
                            Form1.Table.Cells[0,a],clGreen);
 end;

end;


Quattro   (2005-12-08 15:01:00) [1]

всё!!проблем больше пока не вижу=))))всем спасибо за терпение=))


Quattro   (2005-12-08 14:53:00) [2]

Во!!спасибо!!!!разобрался..проблема действительно в максимумах/минимумах таилась....тока теперь возникла другая=))...как убрать обозначччения точек на графике??...что бы не подписывались координаты точек..


Tonich   (2005-12-08 14:15:00) [3]

да попробуй просто на чарте что-то нарисовать,
а особенно вот без этой строки

Form1.Chart.LeftAxis.Maximum:=Temp[Form1.Table.RowCount-1]+50


Quattro   (2005-12-08 14:07:00) [4]

ошибся...вот так,но тоже ничего не происходит....
procedure TValues.GrafDraw;
var
a:integer;
Temp:array [1..200] of double;
begin
Form1.Chart.Series[1].Clear;//î÷èñòêà
{ for a:=1 to Form1.Table.RowCount-1 do
    begin
      if Form1.Table.Cells[1,a]'' then Temp[a]:=StrToFloat(Form1.Table.Cells[1,a])
        else Temp[a]:=StrToFloat(Form1.Table.Cells[2,a]);
    end;
  for a:=1 to Form1.Table.RowCount-1 do
   if Temp[a]>Temp[a+1] then Temp[a+1]:=Temp[a];
Form1.Chart.LeftAxis.Maximum:=Temp[Form1.Table.RowCount-1]+50;
  for a:=1 to Form1.Table.RowCount-1 do}
    begin
      Form1.Chart.Series[1].AddXY(StrToTime('12:00'),StrToFloat(Form1.Table.Cells[1,1]),'qwe',clGreen);
      ShowMessage('qwe');
      Form1.Chart.Series[1].AddXY(StrToTime('12:10'),StrToFloat(Form1.Table.Cells[1,2],'qwe',clGreen);
    end;
end;


Quattro   (2005-12-08 14:00:00) [5]

Kolan © Дебуггер говорит что мол всё гут...никаких ерроров..и значения все в норме....


Quattro   (2005-12-08 13:58:00) [6]

Чарт даже так почему то не хочет рисовать...
procedure TValues.GrafDraw;
var
 a:integer;
 Temp:array [1..200] of double;
begin
 Form1.Chart.Series[1].Clear;//î÷èñòêà
 { for a:=1 to Form1.Table.RowCount-1 do
     begin
       if Form1.Table.Cells[1,a]'' then Temp[a]:=StrToFloat(Form1.Table.Cells[1,a])
         else Temp[a]:=StrToFloat(Form1.Table.Cells[2,a]);
     end;
   for a:=1 to Form1.Table.RowCount-1 do
    if Temp[a]>Temp[a+1] then Temp[a+1]:=Temp[a];
 Form1.Chart.LeftAxis.Maximum:=Temp[Form1.Table.RowCount-1]+50;
   for a:=1 to Form1.Table.RowCount-1 do}
     begin
       Form1.Chart.Series[1].AddXY(StrToTime('12:00'),Temp[1],'qwe',clGreen);
       ShowMessage('qwe');
       Form1.Chart.Series[1].AddXY(StrToTime('12:10'),Temp[2],'qwe',clGreen);
     end;
end;
Temp[1] и Temp[2] содержат числа с плавающей запятой...


Kolan   (2005-12-08 13:29:00) [7]

А у тебя
Form1.Table.Cells[2,a]
тут есть значения

Закомментируй все свой вычисления и просто нарисуй график. Потом постепеннно убирай кмментарии и каждый раз проверяй.
Кстати а DeBug'ером пройтис не пробовал. И AddXY используй...


Tonich   (2005-12-08 12:43:00) [8]

ну а если не трогать сам ось вот в этой строке

> Form1.Chart.LeftAxis.Maximum:=Temp[Form1.Table.RowCount-
> 1]+50;


то как тогда?


Quattro   (2005-12-08 12:31:00) [9]

извини=))....вот так лучше?=)
procedure TValues.GrafDraw;
var
a:integer;
Temp:array [1..200] of double;
begin
 Form1.Chart.Series[1].Clear;//очистка
   for a:=1 to Form1.Table.RowCount-1 do
     begin
       if Form1.Table.Cells[1,a]<>'' then Temp[a]:=StrToFloat(Form1.Table.Cells[1,a])
         else
           Temp[a]:=StrToFloat(Form1.Table.Cells[2,a]);
     end;
   for a:=1 to Form1.Table.RowCount-1 do
     if Temp[a]>Temp[a+1] then Temp[a+1]:=Temp[a];
 Form1.Chart.LeftAxis.Maximum:=Temp[Form1.Table.RowCount-1]+50;
   for a:=4 to Form1.Table.RowCount-1 do
     begin
       Form1.Chart.Series[1].Add(StrToFloat(Form1.Table.Cells[2,a]),
                           Form1.Table.Cells[0,a],clGreen);
     end;
end;

С AddXY тоже не получается...даже не знаю что и думать...=(


Tonich   (2005-12-08 12:18:00) [10]

попробуй так
Form1.Chart.Series[1].Add XY(StrToFloat(Form1.Table.Cells[2,a]),
                           Form1.Table.Cells[0,a],clGreen);
ты хоть выстроил как-то код, его пока прочитаешь....


Наверх

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