Форум: "Основная";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
ВнизChart Найти похожие ветки
← →
Alex_s (2004-08-20 09:28) [0]Господа мастера!
Почему при добавлении диаграммы:
Chart1.AddSeries(Series1);
она не выводится визуально?
Свойства осей:
BottomAxis.Automatic=true;
LeftAxis.Automatic=true;
Min и Max пределы значений осей изменяются в зависимости от Min и Max значений диаграммы, а саму диаграмму не видно?
← →
Семен Сорокин © (2004-08-20 10:23) [1]а значения в Series1 есть?
приведи весь код добавления.
← →
Alex_s (2004-08-20 10:41) [2]На корявость кода прошу не обращать внимания, это черновик.
unit uProt;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series;
type
TDan=record
dan1,dan2,dan3,dan4,dan5:real;
end;
TMyThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
TForm1 = class(TForm)
Chart1: TChart;
Chart2: TChart;
Chart3: TChart;
GroupBox1: TGroupBox;
Check1: TCheckBox;
Check2: TCheckBox;
Check3: TCheckBox;
Check4: TCheckBox;
Check5: TCheckBox;
Button1: TButton;
Button2: TButton;
RG1: TRadioGroup;
Button3: TButton;
Edit1: TEdit;
Button4: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Check1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Check2Click(Sender: TObject);
procedure RG1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ZDan:TDan;
FDan:file of TDan;
T:TMyThread;
i:word;
j:shortint;
Grafik1,Grafik2,Grafik3,
Grafik4,Grafik5 : TChartSeries;
implementation
{$R *.dfm}
procedure TMyThread.Execute;
begin
while not Terminated do
begin
if (i mod 2)=0 then j:=50
else j:=-50;
ZDan.dan1:=100+j;
ZDan.dan2:=200+j;
ZDan.dan3:=300+j;
ZDan.dan4:=400+j;
ZDan.dan5:=500+j;
Write(FDan,ZDan);
sleep(200);
i:=i+1;
{Synchronize(DoWork);}
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Caption="Стоп" then
begin
T.Terminate;
Button1.Caption:="Запись";
CloseFile(FDan);
Exit;
end;
AssignFile(FDan,"d:\prot.prt");
Rewrite(FDan);
i:=1;
T:=TMyThread.Create(False);
T.Priority:=tpLower;
Button1.Caption:="Стоп";
end;
procedure TForm1.Check1Click(Sender: TObject);
begin
if Check1.Checked then
begin
Chart1.AddSeries(Grafik1);
end else
begin
Chart1.RemoveSeries(Grafik1);
{Chart1.Series[0].Active:=false;}
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i:word;
begin
AssignFile(FDan,"d:\prot.prt");
Reset(FDan);
i:=0;
Grafik1:=TChartSeries.Create(nil);
Grafik2:=TChartSeries.Create(nil);
Chart1.RemoveAllSeries;
while not eof(FDan) do
begin
read(FDan,ZDan);
Grafik1.AddXY(i,ZDan.dan1);
Grafik2.AddXY(i,ZDan.dan2);
i:=i+1;
end;
CloseFile(FDan);
Chart1.BottomAxis.Automatic:=true;
Chart1.LeftAxis.Automatic:=true;
end;
procedure TForm1.Check2Click(Sender: TObject);
begin
if Check2.Checked then
begin
Chart1.AddSeries(Grafik2);
{Chart1.Series[1].Active:=true}
end else
begin
Chart1.RemoveSeries(Grafik2);
{Chart1.Series[1].Active:=false;}
end;
end;
end.
← →
Семен Сорокин © (2004-08-20 11:08) [3]Grafik1:=TChartSeries.Create(nil);
TChartSeries - абстрактный базовый класс, используйте например TLineSeries или TFastLineSeries.
T:=TMyThread.Create(False);
T.Priority:=tpLower;
обычно пишут так:
T:=TMyThread.Create(true);
T.Priority:=tpLower;
T.Resume
T.Terminate;
добавьте после этой строчки еще вот это:
T.WaitFor;
T.Free;
так как св-во FreeOnTreminate у Вас в True не выставлено.
Кроме этого этот код надо продублировать на onDestroy формы, приложения, иначе некрасиво будет - приложение закрылось а доп. поток продолжает работать.
← →
Alex_s (2004-08-20 11:20) [4]Спасибо!
Поменял:
Grafik1,Grafik2,Grafik3,Grafik4,Grafik5 : TChartSeries;
на Grafik1,Grafik2,Grafik3,Grafik4,Grafik5 : TLineSeries;
и все Ok!
Учту и другие ваши рекомендации!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c