вопрос про построение графика в Delphi

Ichip

При выполнении следующего кода
 var
Form1: TForm1;
a,c,d: extended;
b,e: integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
begin
d:=StrToFloat(Edit1.Text);
e:=StrToInt(Edit2.Text);
end;
for b:=0 to e*500 do
begin
a:=d*(1+tanh(-e/10+b/1000/2;
c:=d*(1-tanh(-e/2.5+b/1000/2;
Chart1.Series[0].AddXY(b/1000, a,'', clGreen);
Chart1.Series[1].AddXY(b/1000+e/2, c,'', clRed);
end;
end;
end.

строится график для данных параметров в b и e. Если изменить один из этих параметров (или оба то строится много графиков, в которых перебираются значения b (или e). Вопрос:
как изменить код так, чтобы строился только график для заданных параметров (уже измененных)?
как очищать график от "промежуточных" графиков? и почему они вообще строятся?
ЗЫ. инета нет, посмотреть не могу, хелп в дельфи не работает

Beverley

Попробуй вставить в обработчик Button1.Click:
 
Chart1.Series[0].Clear;
Chart1.Series[1].Clear;

Andbar

А BeginUpdate/EndUpdate использовать религия не позволяет?

Ichip

спасибо, помогло

Ichip

а что это такое?

zorin29

Каждое AddXY IMHO посылает Chart-у сообщение о перерисовке. В результате после выполнения цикла Chart перерисуется ни фига себе раз. Ну или просто обработает нифига себе сообщений.
Чтобы с этим бороться, можно использовать
Chart1.BeginUpdate;
// код, меняющий содержимое Chart-а
Chart1.EndUpdate;

Andbar

а что это такое?
это одна из тех вещей, без которой неграмотные программисты пишут офигенно тормозные программы.

Ichip

спасибо

Ichip

т.е. правильно будет

Chart1.BeginUpdate;
Chart1.Series[0].AddXY(b/1000, a,'', clGreen);
Chart1.Series[1].AddXY(b/1000+e/2, c,'', clRed);
Chart1.EndUpdate;

?
так не работает(Undeclared identifier: 'BeginUpdate')
Оставить комментарий
Имя или ник:
Комментарий: