Главная страница
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.055 c
3-1167911522
r9000
2007-01-04 14:52
2007.04.01
Использование подключения к базе в dll -ке


3-1168333056
Андреевич
2007-01-09 11:57
2007.04.01
OLE DB error occured. Code 80040E2Fh - что означает?


11-1140886672
ECM
2006-02-25 19:57
2007.04.01
Новости сайта kolnmck.ru


15-1173445639
oldman
2007-03-09 16:07
2007.04.01
Как хорошая идея становиться кривой...


1-1171015510
DelphiLexx
2007-02-09 13:05
2007.04.01
FreeAndNil