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

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

Chart [D7, WinXP]


Alex_s ©   (2004-08-20 09:28:00) 

Господа мастера!
Почему при добавлении диаграммы:
Chart1.AddSeries(Series1);
она не выводится визуально?
Свойства осей:
 BottomAxis.Automatic=true;
 LeftAxis.Automatic=true;
Min и Max пределы значений осей изменяются в зависимости от Min и Max значений диаграммы, а саму диаграмму не видно?


Alex_s   (2004-08-20 11:20:00) [1]

Спасибо!
Поменял:
Grafik1,Grafik2,Grafik3,Grafik4,Grafik5 : TChartSeries;
на Grafik1,Grafik2,Grafik3,Grafik4,Grafik5 : TLineSeries;
и все Ok!
Учту и другие ваши рекомендации!


Семен Сорокин   (2004-08-20 11:08:00) [2]

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 10:41:00) [3]

На корявость кода прошу не обращать внимания, это черновик.

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 10:23:00) [4]

а значения в Series1 есть?
приведи весь код добавления.


Наверх

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