{--------------------------------------------------------------------------- The control program for mass-spectrometer MI1201-AGM (c) Copyright Aleksandrov O.E., 2001 Molecular Physics department, USTU, Ekaterinsburg, K-2, 620002, RUSSIA phone 75-47-15 E-mail: aleks@dpt.ustu.ru Программа управления масс-спектрометром МИ1201-АГМ (c) Собственность Александрова О.Е., 2001 620002, Екатеринбург, К-2, УГТУ, Кафедра молекулярной физики тел. 75-47-15 E-mail: aleks@dpt.ustu.ru ----------------------------------------------------------------------------} unit MCAD_MI1201_FormNumbersFormat; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TFormNumbersFormat = class(TForm) ListBoxSeries: TListBox; EditSeriesFormat: TEdit; LabelSeriesFormat: TLabel; EditMassFormat: TEdit; LabelMass: TLabel; LabelSeries: TLabel; LabelLeftAxis: TLabel; EditLeftAxis: TEdit; LabelRightAxis: TLabel; EditRightAxis: TEdit; LabelBottomtAxis: TLabel; EditBottomAxis: TEdit; ButtonApply: TButton; ButtonCancel: TButton; ButtonOK: TButton; Label1: TLabel; ButtonHelp: TButton; LabelTrace: TLabel; EditTrace: TEdit; procedure FormCreate(Sender: TObject); procedure FormHide(Sender: TObject); procedure ListBoxSeriesClick(Sender: TObject); procedure EditSeriesFormatKeyPress(Sender: TObject; var Key: Char); procedure ButtonCancelClick(Sender: TObject); procedure ButtonApplyClick(Sender: TObject); procedure ButtonOKClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ButtonHelpClick(Sender: TObject); procedure EditKeyPress(Sender: TObject; var Key: Char); private { Private declarations } procedure DisableAll; procedure EnableAll; procedure DisableSeries; procedure EnableSeries; procedure FillSeries; function Valid:boolean; procedure ApplyAll; procedure ApplySeries; procedure FillAll; public Form:tForm; { Public declarations } end; var FormNumbersFormat: TFormNumbersFormat; implementation USES Series, MCAD_MI1201_FormSpectrum, MCAD_MI1201_Thread_Types; {$R *.DFM} procedure TFormNumbersFormat.FormCreate(Sender: TObject); var s:tSeries; begin for s:=Low(s) to High(s) do begin ListBoxSeries.Items.Add(cMSSeriesTitles[s]); end; end; procedure TFormNumbersFormat.FormHide(Sender: TObject); begin // Form:=NIL; end; procedure TFormNumbersFormat.DisableAll; begin EditMassFormat.Enabled:=FALSE; EditMassFormat.Text:=''; EditLeftAxis.Text:=''; EditRightAxis.Text:=''; EditBottomAxis.Text:=''; EditTrace.Text:=''; DisableSeries; end; procedure TFormNumbersFormat.DisableSeries; begin EditSeriesFormat.Enabled:=FALSE; EditSeriesFormat.Text:=''; end; procedure TFormNumbersFormat.EnableAll; begin EnableSeries; if EditMassFormat.Enabled then Exit; EditMassFormat.Enabled:=TRUE; FillAll; end; procedure TFormNumbersFormat.FillAll; begin if not Valid then Exit; with (Form as tFormSpectrum) do begin EditMassFormat.Text:=SeriesMassIndicator.ValueFormat; EditLeftAxis.Text:=Chart.LeftAxis.AxisValuesFormat; EditRightAxis.Text:=Chart.RightAxis.AxisValuesFormat; EditBottomAxis.Text:=Chart.BottomAxis.AxisValuesFormat; if Assigned(Tracer) then begin EditTrace.Enabled:=TRUE; LabelTrace.Enabled:=TRUE; EditTrace.Text:=Tracer.ValueFormat; end else begin EditTrace.Enabled:=FALSE; LabelTrace.Enabled:=FALSE; end; end; end; procedure TFormNumbersFormat.ApplyAll; begin if not Valid then Exit; with (Form as tFormSpectrum) do begin try SeriesMassIndicator.ValueFormat:=EditMassFormat.Text; Chart.LeftAxis.AxisValuesFormat:=EditLeftAxis.Text; Chart.RightAxis.AxisValuesFormat:=EditRightAxis.Text; Chart.BottomAxis.AxisValuesFormat:=EditBottomAxis.Text; if Assigned(Tracer) then begin EditTrace.Enabled:=TRUE; LabelTrace.Enabled:=TRUE; Tracer.ValueFormat:=EditTrace.Text; end else begin EditTrace.Enabled:=FALSE; LabelTrace.Enabled:=FALSE; end; except end; end; end; procedure TFormNumbersFormat.ApplySeries; var i:integer; ss:tPointSeries; begin if not Valid then Exit; i:=EditSeriesFormat.Tag; if (i<0) or (i>Ord(High(tSeries))) then Exit; ss:=(Form as tFormSpectrum).Signals[tSeries(i)]; if Assigned(ss) then begin ss.ValueFormat:=EditSeriesFormat.Text; end else begin DisableSeries; end; end; procedure TFormNumbersFormat.EnableSeries; begin EditSeriesFormat.Enabled:=TRUE; end; procedure TFormNumbersFormat.FillSeries; begin if not Valid then Exit; if (EditSeriesFormat.Tag<0) or (EditSeriesFormat.Tag>Ord(High(tSeries))) then begin DisableSeries; end else with (Form as tFormSpectrum) do begin if Assigned(Signals[tSeries(EditSeriesFormat.Tag)]) then begin EnableSeries; with Signals[tSeries(EditSeriesFormat.Tag)] do begin EditSeriesFormat.Text:=ValueFormat; end; end else begin DisableSeries; end; end; end; procedure TFormNumbersFormat.ListBoxSeriesClick(Sender: TObject); begin if not Valid then Exit; ApplySeries; EditSeriesFormat.Tag:=ListBoxSeries.ItemIndex; FillSeries; end; function TFormNumbersFormat.Valid:boolean; begin Result:=Assigned(Form); if not Result then begin DisableAll; end else begin EnableAll; end; end; procedure TFormNumbersFormat.EditSeriesFormatKeyPress(Sender: TObject; var Key: Char); begin case Key of #13: ApplySeries; #27:ListBoxSeriesClick(Sender); end; end; procedure TFormNumbersFormat.ButtonCancelClick(Sender: TObject); begin ListBoxSeriesClick(Sender); EnableAll; Hide; end; procedure TFormNumbersFormat.ButtonApplyClick(Sender: TObject); begin ApplyAll; ApplySeries; end; procedure TFormNumbersFormat.ButtonOKClick(Sender: TObject); begin ButtonApplyClick(Sender); Hide; end; procedure TFormNumbersFormat.FormShow(Sender: TObject); begin if not Valid then Exit; FillAll; ListBoxSeriesClick(Sender); end; procedure TFormNumbersFormat.FormDestroy(Sender: TObject); begin if Self=FormNumbersFormat then FormNumbersFormat:=NIL; end; procedure TFormNumbersFormat.ButtonHelpClick(Sender: TObject); resourcestring rsFormatNumberTitle='Формат числа'; rsFormatNumber= 'Символ "." - является разделителем формата на формат целой и формат дробной части числа.' +#13'Символы "#" и "0" - указывают на знакоместо цифры.' +#13'Нули на месте "#" не будут отображены в начале целой и в конце дробной части.' +#13'Цифры на месте "0" будут отображены в любом случае.' +#13'Символ "," - указывает на место вставки разделителя тысяч (необязательно), вместо которого будет вставлен символ-разделитель тысяч, установленный в Windows.' +#13#9'Например, число 1001%s10400 по формату "#,##0.##" будет отображено 1%s001%s1'; begin MessageBox(Handle, PChar(Format(rsFormatNumber,[DecimalSeparator,THOUSANDSEPARATOR,DecimalSeparator])), PChar(rsFormatNumberTitle),MB_OK+MB_ICONINFORMATION); end; procedure TFormNumbersFormat.EditKeyPress(Sender: TObject; var Key: Char); begin case Key of #13: ApplyAll; #27: FillAll; end; end; end.