Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.01;
Скачать: CL | DM;

Вниз

Как зоблокировать TChart на время рисвания на нем?   Найти похожие ветки 

 
Kolan ©   (2007-02-06 10:31) [0]

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

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 10:54) [1]

О то мигает :)


 
Kolan ©   (2007-02-06 11:37) [2]

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


 
ЮЮ ©   (2007-02-06 12:22) [3]

TCanvas(Chart1.Canvas).Lock;


 
ЮЮ ©   (2007-02-06 12:32) [4]

Сорри, 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;


 
Kolan ©   (2007-02-06 13:08) [5]

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

Ввел для проверки 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 - непомогает. Так как я вижу см процес рисования. А по идее должна быть задержка, а потом сразу все появится.


 
Kolan ©   (2007-02-06 13:10) [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. Просто я его не там применил :) Благодарю за помошь :)


 
ЮЮ ©   (2007-02-06 13:17) [7]


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


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

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

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


 
Kolan ©   (2007-02-06 13:19) [8]

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

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

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


 
Kolan ©   (2007-02-06 13:33) [9]

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


 
Kolan ©   (2007-02-06 14:01) [10]

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


 
Kolan ©   (2007-02-06 15:56) [11]

Может можно наследника сделать  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;



Страницы: 1 вся ветка

Текущий архив: 2007.04.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
2-1173788444
masha179
2007-03-13 15:20
2007.04.01
очистка


15-1173262964
Kok
2007-03-07 13:22
2007.04.01
const


8-1154428046
AbrosimovA
2006-08-01 14:27
2007.04.01
Как реализовать сохранение кадров DVD-фильма в bmp-файл


2-1173183324
Интересующийся
2007-03-06 15:15
2007.04.01
Простой вопрос пр справку


15-1173088085
vajo
2007-03-05 12:48
2007.04.01
Windows XP загрузили на процессоре с частотой 8 МГц