Здравствуйте, 08101967!
Смотрите приложение:
[code lang=pascal h=300]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Menus;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
LoadSeries1: TMenuItem;
Exit1: TMenuItem;
Chart1: TMenuItem;
FreeAllSeries1: TMenuItem;
s11: TMenuItem;
s21: TMenuItem;
s31: TMenuItem;
s41: TMenuItem;
s51: TMenuItem;
s61: TMenuItem;
Chart2: TChart;
Series1: TLineSeries;
procedure LoadSeries1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure FreeAllSeries1Click(Sender: TObject);
procedure s11Click(Sender: TObject);
procedure s21Click(Sender: TObject);
procedure s31Click(Sender: TObject);
procedure s41Click(Sender: TObject);
procedure s51Click(Sender: TObject);
procedure s61Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure MyMenuOnClick(a:string);
var
b,c:integer;
begin
b:=1;
c:=0;
while b < Form1.MainMenu1.Items[1].Count do
begin
if Form1.MainMenu1.Items[1].Items[b].Checked then inc(c);
inc(b);
end;
b:=1;
while(b < Form1.MainMenu1.Items[1].Count) and
(Form1.MainMenu1.Items[1].Items[b].Caption <> a) and
(pos('.',Form1.MainMenu1.Items[1].Items[b].Caption)>0) do inc(b);
if (c > 1) or (not Form1.MainMenu1.Items[1].Items[b].Checked) then
begin
if b < Form1.MainMenu1.Items[1].Count then
begin
Form1.Chart2.Series[b].Active:= not Form1.Chart2.Series[b].Active;
Form1.MainMenu1.Items[1].Items[b].Checked:=not Form1.MainMenu1.Items[1].Items[b].Checked;
end;
end
else ShowMessage('This last series, please turn on FreeAllSeries');
end;
procedure TForm1.s11Click(Sender: TObject);
begin
MyMenuOnClick((Sender as TMenuItem).Caption);
end;
procedure TForm1.s21Click(Sender: TObject);
begin
MyMenuOnClick((Sender as TMenuItem).Caption);
end;
procedure TForm1.s31Click(Sender: TObject);
begin
MyMenuOnClick((Sender as TMenuItem).Caption);
end;
procedure TForm1.s41Click(Sender: TObject);
begin
MyMenuOnClick((Sender as TMenuItem).Caption);
end;
procedure TForm1.s51Click(Sender: TObject);
begin
MyMenuOnClick((Sender as TMenuItem).Caption);
end;
procedure TForm1.s61Click(Sender: TObject);
begin
MyMenuOnClick((Sender as TMenuItem).Caption);
end;
procedure TForm1.LoadSeries1Click(Sender: TObject);
var
Find:TSearchRec;
Data:TStringList;
i,j:integer;
begin
if FindFirst('s*.dat',faAnyFile,Find)=0 then
begin
Chart2.FreeAllSeries;
j:=1;
repeat
MainMenu1.Items[1].Items[j].Visible:=true;
MainMenu1.Items[1].Items[j].Checked:=true;
MainMenu1.Items[1].Items[j].Caption:=Find.Name;
Data:=TStringList.Create;
Data.LoadFromFile(Find.Name);
Chart2.AddSeries(TLineSeries.Create(self));
for i:=0 to Data.Count-1 do
begin
Chart2.Series[Chart2.SeriesCount-1].AddXY(
StrToFloat(copy(Data[i],1,pos(' ',Data[i])-1)),
StrToFloat(copy(Data[i],pos(' ',Data[i])+1,length(Data[i]))),'');
end;
Data.Free;
inc(j);
until FindNext(Find)<>0;
Form1.MainMenu1.Items[0].Items[0].Enabled:=false;
Form1.MainMenu1.Items[1].Enabled:=true;
end
else
ShowMessage('File not found');
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
Form1.Chart2.FreeAllSeries;
Form1.Close;
end;
procedure TForm1.FreeAllSeries1Click(Sender: TObject);
var
a:integer;
begin
Form1.Chart2.FreeAllSeries;
a:=1;
While a < Form1.MainMenu1.Items[1].Count do
begin
MainMenu1.Items[1].Items[a].Visible:=false;
MainMenu1.Items[1].Items[a].Checked:=false;
MainMenu1.Items[1].Items[a].Caption:='s'+IntToStr(a);
inc(a);
end;
Form1.MainMenu1.Items[0].Items[0].Enabled:=true;
Form1.MainMenu1.Items[1].Enabled:=false;
end;
end.[/code]
На форме Вы должны создать следующую структуру:
Удачи!