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

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

Как зоблокировать TChart на время рисвания на нем?


Kolan ©   (2007-02-06 10:31:00) 

Допустим я рисую так:

Clear; //Очищаю серию.
for I := Low(Arr) to High(Arr) do
     AddXY(Arr[I].X, Arr[I].Y*1000);


Как заблокировать чарт на время рисования? То нужно что-то вроде:
//Заблокировал
Clear;
for I := Low(Arr) to High(Arr) do
     AddXY(Arr[I].X, Arr[I].Y*1000);
//Разблокировал. И только тут нарисованое появилось на чарте.


Kolan   (2007-02-06 15:56:00) [1]

Может можно наследника сделать  TChartSeries? Исходник есть.
Толкьо непонятный он:
{ Removes all points.
 Triggers all events and notifications and repaints. }
Procedure TChartSeries.Clear;
begin
 FFirstVisibleIndex:=-1;  // 7.0 #1281
 FLastVisibleIndex:=-1;

 ClearLists;
 if Assigned(FOnClearValues) then FOnClearValues(Self);
 NotifyValue(veClear,0);

 if Assigned(FunctionType) then FunctionType.Clear;

 if FActive and Assigned(FParent) and
   (not (csDestroying in FParent.ComponentState)) then Repaint;
end;


Kolan   (2007-02-06 14:01:00) [2]

А есть у кого справка на Locked и EndUpdate ?


Kolan   (2007-02-06 13:33:00) [3]

Беру свои слова назад. EndUpdate влияет на AddXY - те не видно процес исования.
Но на  FSerie.Clear не влияет. Те мигание есть.


Kolan   (2007-02-06 13:19:00) [4]

> С твоими обёртками нет уверенности,

:) Если бы ты узнал как обернут чарт ты бы "ужаснулся". Там целый менеджер графиков, который создает их динамически. И графики разных типов :)

В любом случае BeginUpdate - рулит.


ЮЮ   (2007-02-06 13:17:00) [5]


> Так как я вижу см процес рисования.


А я только задежку при пошом колтчестве точек

С твоими обёртками нет уверенности, что  FChart и TSerieGraph как-то связаны.

Если бы это был метод обертки для TChart, а не для TLineSeries ^)


Kolan   (2007-02-06 13:10:00) [6]

procedure TSerieGraph.Draw(Arr: TDoublePointArray);
var
 I: Integer;
begin
 FSerie.BeginUpdate;
 try
   Clear;
 //TODO: Be careful.
 {Be careful with 1000 multiplication!!!}
   for I := Low(Arr) to High(Arr) do
   begin
     AddXY(Arr[I].X, Arr[I].Y*1000);
     Sleep(10);
   end;
 finally
   FSerie.EndUpdate;
 end;
end;


А тьфу. работает EndUpdate. Просто я его не там применил :) Благодарю за помошь :)


Kolan   (2007-02-06 13:08:00) [7]

Это я пробовал :)

Ввел для проверки Sleep.
procedure TSerieGraph.Draw(Arr: TDoublePointArray);
var
 I: Integer;
begin
 FChart.Locked := True;
 try
   Clear;
 //TODO: Be careful.
 {Be careful with 1000 multiplication!!!}
   for I := Low(Arr) to High(Arr) do
   begin
     AddXY(Arr[I].X, Arr[I].Y*1000);
     Sleep(10);
   end;
 finally
   FChart.Locked := False;
 end;
end;


FChart.Locked - непомогает. Так как я вижу см процес рисования. А по идее должна быть задержка, а потом сразу все появится.


ЮЮ   (2007-02-06 12:32:00) [8]

Сорри, tuj Canvas вовсе и не TCanvas.

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 i: integer;
begin
 Chart1.Locked := true;
 try
   Series1.Clear;
   for i := 0 to 1000 do
     Series1.AddXY(Random, Random);
 finally
    Chart1.Locked := false;
 end;
end;


ЮЮ   (2007-02-06 12:22:00) [9]

TCanvas(Chart1.Canvas).Lock;


Kolan   (2007-02-06 11:37:00) [10]

А нет ли у кого Help'а к чарту для Pro версии?


Kolan   (2007-02-06 10:54:00) [11]

О то мигает :)


Наверх

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