Доброго времени суток, нужна помощь в коррекции программы. Есть программа, она открывает данные с txt файла где 6 станций с 3мя столбиками значений на каждую, нужно скорректировать, чтоб данные считывались с excel файла в котором 6 станций и на каждую только по 1 столбику значений (упростил, убрав лишние) и сразу, по открытию файла с данными, строить график (данные зависящие от времени) по 6-ти станциям, а при открытии выпадающего меню, должно строить отдельно один график по выбранному названию станции, в новой форме, по названию станции. Программу и данные вышлю на почту или куда скажете, ато тут не знаю как прикрепить. Кто может помочь? Сам самоучка и недавно начал учиться программировать в Delphi. Код unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Dialogs, StdCtrls, Controls, ExtCtrls, TeeProcs, TeEngine, Chart,Graphics, Forms, Series, Menus, OleServer, ExcelXP;
type TMassSeries = array of TLineSeries;
TDataXY = record X,Y : Extended; end;
TForm1 = class(TForm) Chart1: TChart; Memo1: TMemo; Button2: TButton; Button3: TButton; OpenDialog1: TOpenDialog; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; SaveDialog1: TSaveDialog; N5: TMenuItem; Noise1: TMenuItem; JNX164001: TMenuItem; GBZ195801: TMenuItem; ICV202701: TMenuItem; HWU217501: TMenuItem; DHO38234001: TMenuItem; Button8: TButton; Chart2: TMenuItem; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ButtonAllClick(Sender: TObject); procedure N2Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure Chart2Click(Sender: TObject);
private { Private declarations } FFileBaseData : TStringList; FMassSeries: TMassSeries; public { Public declarations } function OutFloatData(AStr: string; NumPos : integer =0): TDataXY; end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ButtonAllClick(Sender: TObject); var i:Integer; ExtXY: TDataXY; begin for I := 1 to FFileBaseData.Count - 1 do begin ExtXY:=OutFloatData(FFileBaseData.Strings[i],(Sender as TButton).Tag); FMassSeries[(Sender as TButton).Tag].AddXY(ExtXY.X, ExtXY.Y); end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var i:Integer; begin for I := 0 to High(FMassSeries) do FreeAndNil(FMassSeries); FreeAndNil(FFileBaseData); end;
function TForm1.OutFloatData(AStr: string; NumPos: integer): TDataXY; var aSL: TStringList; sx, sy: string; begin aSL:= TStringList.Create; aSL.DelimitedText:=AStr; sx:=aSL.Strings[2 + 3 * NumPos]; sx[Pos('.',sx)]:=decimalseparator; sy:=aSL.Strings[3 + 3 * NumPos]; sy[Pos('.',sy)]:=decimalseparator; Result.X:=StrToFloat(SX); Result.Y:=StrToFloat(SY); FreeAndNil(aSL); end;
procedure TForm1.N2Click(Sender: TObject); var i: Integer; begin SetLength(FMassSeries, 6);
for I := 0 to High(FMassSeries) do begin FMassSeries:= TLineSeries.Create(self); Chart1.AddSeries(FMassSeries); end; if OpenDialog1.Execute then begin FFileBaseData:=TStringList.Create; FFileBaseData.LoadFromFile(OpenDialog1.FileName); Memo1.Lines:=FFileBaseData; Button2.Enabled:=True; Button3.Enabled:=True; Button4.Enabled:=True; Button5.Enabled:=True; Button6.Enabled:=True; Button7.Enabled:=True; end else MessageBox(Application.Handle, 'файл не загружен.', '', MB_OK); end;
procedure TForm1.N4Click(Sender: TObject); begin close; end;
procedure TForm1.N3Click(Sender: TObject); begin if savedialog1.Execute then begin Memo1.Lines.SaveToFile(savedialog1.FileName); end; end;
procedure TForm1.Chart2Click(Sender: TObject); begin Chart1.SeriesList[0].Clear; Chart1.SeriesList[1].Clear; Chart1.SeriesList[2].Clear; Chart1.SeriesList[3].Clear; Chart1.SeriesList[4].Clear; Chart1.SeriesList[5].Clear; end;
end.[/i]
|
|
|