Witam
Mam taki problem, że w pewnym wątku genereję tablicę danych bb[1..66] która chciałbym wyświetlić w postaci słupków w komponencie TChar. Do tej pory korzystałem z komponentu TChar który umieszcziłem na formie głownej. Jednak gdy dokonuje jakieś operacji w głównym wątku (zasymulowałem to w formie Sleep) to dane te są wyświetlane bardzo wolno. I tutaj moje pytanie, czy istnieje możliwość stworzenia komponentu TChar, który bedzie powiązany jedynie z drugim watkiem, czyli z tym watkiem gdzie sa generowane dane.
A to moje dotychczasowe wypociny:
unit der;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart;
type
TMainForm = class(TForm)
btnStart: TButton;
btnStop: TButton;
Timer1: TTimer;
Chart1: TChart;
Series1: TBarSeries;
procedure btnStartClick(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
public
check:boolean;
end;
TTest = class(TThread)
private
FForm : TForm;
FColor : TColor;
protected
procedure Execute; override;
public
bb:array[1..66] of real;
jj_d:integer;
check_t, timer_check:boolean;
procedure Draw;
end;
var
MainForm: TMainForm;
Rectangle : TTest;
implementation
{$R *.DFM}
procedure TTest.Execute;
var
i:integer;
begin
FreeOnTerminate := True;
while not (Application.Terminated) or (Terminated) do
begin
for i:=1 to 66 do
begin
bb[i]:=5+Random(10)/10;
end;
Draw;
Synchronize(Draw);
end;
end;
procedure TTest.Draw;
var
i:integer;
begin
MainForm.Series1.Clear;
with MainForm.Series1 do
begin
for i:=1 to 66 do Add(bb[i],IntToStr(i),clRed);
end;
end;
procedure TMainForm.btnStartClick(Sender: TObject);
begin
Timer1.Enabled:=True;
if not Assigned(Rectangle) then Rectangle := TTest.Create(True)
else Rectangle.Resume;
end;
procedure TMainForm.btnStopClick(Sender: TObject);
begin
Timer1.Enabled:=False;
Rectangle.Suspend; // wstrzymaj
btnStart.Caption := 'Wznów';
end;
procedure TMainForm.Timer1Timer(Sender: TObject);
var
i:integer;
begin
Sleep(100);
end;
initialization
Rectangle:= TTest.Create(True);
Randomize;
end.