home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 December / Chip_2001-12_cd1.bin / zkuste / delphi / kolekce / d56 / DM2KVCL.ZIP / AXISDLG.PAS < prev    next >
Pascal/Delphi Source File  |  2001-08-20  |  6KB  |  174 lines

  1. {****************************************************************************}
  2. {                            Data Master 2000                                }
  3. {****************************************************************************}
  4. unit AxisDlg;
  5.  
  6. interface
  7.  
  8. uses
  9.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  10.   ComCtrls, ImgList, StdCtrls, Buttons, Spin, ExtCtrls, ColorGrd, Plot,
  11.   FloatEd;
  12.  
  13. type
  14.   TAxisPropsForm = class(TForm)
  15.     OkBitBtn: TBitBtn;
  16.     CancelBitBtn: TBitBtn;
  17.     HelpBitBtn: TBitBtn;
  18.     ImageList: TImageList;
  19.     FontDialog: TFontDialog;
  20.     ColorDialog: TColorDialog;
  21.     PageControl: TPageControl;
  22.     ScaleTabSheet: TTabSheet;
  23.     LabelsTabSheet: TTabSheet;
  24.     LineTabSheet: TTabSheet;
  25.     ManualScalePanel: TPanel;
  26.     FormatGroupBox: TGroupBox;
  27.     WidthLabel: TLabel;
  28.     DigitsLabel: TLabel;
  29.     SampleLabel: TLabel;
  30.     WidthSpinEdit: TSpinEdit;
  31.     FormatRadioGroup: TRadioGroup;
  32.     DigitsSpinEdit: TSpinEdit;
  33.     ManualScaleRadioButton: TRadioButton;
  34.     MinScaleLabel: TLabel;
  35.     MaxScaleLabel: TLabel;
  36.     AutoScalePanel: TPanel;
  37.     MarginsLabel: TLabel;
  38.     AutoScaleRadioButton: TRadioButton;
  39.     ExpressionLabel: TLabel;
  40.     ExpressionComboBox: TComboBox;
  41.     FontBitBtn: TBitBtn;
  42.     CaptionLabel: TLabel;
  43.     CaptionEdit: TEdit;
  44.     LineWidthLabel: TLabel;
  45.     LineWidthSpinEdit: TSpinEdit;
  46.     TicksGroupBox: TGroupBox;
  47.     MajorTicksLabel: TLabel;
  48.     MajorTicksSpinEdit: TSpinEdit;
  49.     MinorTicksLabel: TLabel;
  50.     MinorTicksSpinEdit: TSpinEdit;
  51.     GridCheckBox: TCheckBox;
  52.     LineColorGroupBox: TGroupBox;
  53.     LineColorGrid: TColorGrid;
  54.     LineColorBitBtn: TBitBtn;
  55.     MarginsFloatEdit: TFloatEdit;
  56.     MinScaleFloatEdit: TFloatEdit;
  57.     MaxScaleFloatEdit: TFloatEdit;
  58.     TextSpeedButton: TSpeedButton;
  59.     procedure LineColorGridChange(Sender: TObject);
  60.     procedure LineColorBitBtnClick(Sender: TObject);
  61.     procedure FontBitBtnClick(Sender: TObject);
  62.     procedure FormatChange(Sender: TObject);
  63.     procedure ScaleFloatEditChange(Sender: TObject);
  64.     procedure TextSpeedButtonClick(Sender: TObject);
  65.   private
  66.     { Private declarations }
  67.   public
  68.     { Public declarations }
  69.     function Execute(Axis: TAxis): boolean;       {returns true if pressed OK}
  70.   end;
  71.  
  72. var AxisPropsForm: TAxisPropsForm;
  73.  
  74. implementation
  75.  
  76. uses TextDlg;
  77.  
  78. {$R *.DFM}
  79.  
  80. { TAxisPropsForm }
  81.  
  82. function TAxisPropsForm.Execute(Axis: TAxis): boolean;
  83. var B: boolean; I: integer;
  84. begin
  85.   MarginsFloatEdit.Value:=Axis.Margins;            {copy properties from axis}
  86.   MinScaleFloatEdit.Value:=Axis.Min;
  87.   MaxScaleFloatEdit.Value:=Axis.Max;
  88.   MinScaleFloatEdit.Increment:=(Axis.Max-Axis.Min)/Axis.MajorTicks;
  89.   MaxScaleFloatEdit.Increment:=(Axis.Max-Axis.Min)/Axis.MajorTicks;
  90.   ExpressionComboBox.Text:=Axis.Expression;
  91.   WidthSpinEdit.Value:=Axis.LabelWidth;
  92.   DigitsSpinEdit.Value:=Axis.LabelDecimals;
  93.   case Axis.labelType of
  94.     ffGeneral: FormatRadioGroup.ItemIndex:=0;
  95.     ffFixed: FormatRadioGroup.ItemIndex:=1;
  96.     ffExponent: FormatRadioGroup.ItemIndex:=2;
  97.   end;{case}
  98.   FormatChange(Self);           {must be called AFTER setting format controls}
  99.   AutoScaleRadioButton.Checked:=Axis.AutoScale;
  100.   ManualScaleRadioButton.Checked:=not Axis.AutoScale; // else both may be off!
  101.   CaptionEdit.Text:=Axis.Title;
  102.   MajorTicksSpinEdit.Value:=Axis.MajorTicks;
  103.   MinorTicksSpinEdit.Value:=Axis.MinorTicks;
  104.   LineWidthSpinEdit.Value:=Axis.Pen.Width;
  105.   GridCheckBox.Checked:=Axis.ShowGrid;
  106.   LineColorGrid.ForegroundIndex:=-1;
  107.   ColorDialog.Color:=Axis.Pen.Color;
  108.   FontDialog.Font:=Axis.Font;
  109.   Result:=ShowModal=mrOK; if not Result then Exit;                 {cancelled}
  110.   Axis.Margins:=MarginsFloatEdit.Value;              {copy properties to axis}
  111.   Axis.Min:=MinScaleFloatEdit.Value;
  112.   Axis.Max:=MaxScaleFloatEdit.Value;
  113.   Axis.Expression:=ExpressionComboBox.Text;
  114.   Axis.AutoScale:=AutoScaleRadioButton.Checked;
  115.   Axis.LabelWidth:=WidthSpinEdit.Value;
  116.   Axis.LabelDecimals:=DigitsSpinEdit.Value;
  117.   case FormatRadioGroup.ItemIndex of
  118.     0: Axis.labelType:=ffGeneral;
  119.     1: Axis.labelType:=ffFixed;
  120.     2: Axis.labelType:=ffExponent;
  121.   end;
  122.   Axis.Title:=CaptionEdit.Text;
  123.   Axis.MajorTicks:=MajorTicksSpinEdit.Value;
  124.   Axis.MinorTicks:=MinorTicksSpinEdit.Value;
  125.   Axis.Pen.Width:=LineWidthSpinEdit.Value;
  126.   Axis.ShowGrid:=GridCheckBox.Checked;
  127.   Axis.Pen.Color:=ColorDialog.Color;
  128.   Axis.Font:=FontDialog.Font;
  129.   B:=true;       {check expression for duplication and add to the top of list}
  130.   with ExpressionComboBox.Items do for I:=0 to Count-1 do
  131.   if Strings[I]=ExpressionComboBox.Text then B:=false;
  132.   if B and (ExpressionComboBox.Text<>'')
  133.   then ExpressionComboBox.Items.Insert(0, ExpressionComboBox.Text);
  134. end;
  135.  
  136. procedure TAxisPropsForm.LineColorGridChange(Sender: TObject);
  137. begin ColorDialog.Color:=LineColorGrid.ForegroundColor; end;
  138.  
  139. procedure TAxisPropsForm.LineColorBitBtnClick(Sender: TObject);
  140. begin ColorDialog.Execute; LineColorGrid.ForegroundIndex:=-1; end;
  141.  
  142. procedure TAxisPropsForm.FontBitBtnClick(Sender: TObject);
  143. begin FontDialog.Execute; end;
  144.  
  145. procedure TAxisPropsForm.FormatChange(Sender: TObject);
  146. begin
  147.   case FormatRadioGroup.ItemIndex of                    {update scale editors}
  148.     0: MinScaleFloatEdit.FType:=ffGeneral;
  149.     1: MinScaleFloatEdit.FType:=ffFixed;
  150.     2: MinScaleFloatEdit.FType:=ffExponent;
  151.   end;{case}
  152.   MinScaleFloatEdit.MinWidth:=WidthSpinEdit.Value;
  153.   MinScaleFloatEdit.Decimals:=DigitsSpinEdit.Value;
  154.   MaxScaleFloatEdit.FType:=MinScaleFloatEdit.FType;
  155.   MaxScaleFloatEdit.MinWidth:=MinScaleFloatEdit.MinWidth;
  156.   MaxScaleFloatEdit.Decimals:=MinScaleFloatEdit.Decimals;
  157.   with MaxScaleFloatEdit do SampleLabel.Caption:=FloatToStrF((Value+
  158.     MinScaleFloatEdit.Value)/2,FType,MinWidth,Decimals);       {update sample}
  159. end;
  160.  
  161. procedure TAxisPropsForm.ScaleFloatEditChange(Sender: TObject);
  162. begin
  163.   if (Sender as TFloatEdit).Focused then ManualScaleRadioButton.Checked:=true;
  164. end;
  165.  
  166. procedure TAxisPropsForm.TextSpeedButtonClick(Sender: TObject);
  167. var S: string;
  168. begin
  169.   S:=ExpressionComboBox.Text;
  170.   if InputText(S,ExpressionComboBox) then ExpressionComboBox.Text:=S;
  171. end;
  172.  
  173. end.
  174.