unit DataDlg1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,GlobalVar;

type
  TDataDlgfrm = class(TForm)
    LbStartX: TLabel;
    EdStartX: TEdit;
    LbStartY: TLabel;
    EdStartY: TEdit;
    LbStartZ: TLabel;
    EdStartZ: TEdit;
    LbSynVel: TLabel;
    EdSynVel: TEdit;
    LbSynAcc: TLabel;
    EdSynAcc: TEdit;
    Button1: TButton;
    Button2: TButton;
    LbMessage: TLabel;
    CBDir: TComboBox;
    procedure EdStartXExit(Sender: TObject);
    procedure EdStartYExit(Sender: TObject);
    procedure EdStartZExit(Sender: TObject);
    procedure EdSynVelExit(Sender: TObject);
    procedure EdSynAccExit(Sender: TObject);
    procedure EdStartXKeyPress(Sender: TObject; var Key: Char);
    procedure EdStartYKeyPress(Sender: TObject; var Key: Char);
    procedure EdStartZKeyPress(Sender: TObject; var Key: Char);
    procedure EdSynVelKeyPress(Sender: TObject; var Key: Char);
    procedure EdSynAccKeyPress(Sender: TObject; var Key: Char);
    procedure CBDirChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    SelectNo:Integer;
    procedure initControl;    
    { Public declarations }
  end;

var
  DataDlgfrm: TDataDlgfrm;

implementation

{$R *.dfm}

procedure TDataDlgfrm.EdStartXExit(Sender: TObject);
var value:Double;
begin
   if (EdStartX.Text='') then
   begin
       if lang=1 then
         ShowMessage('输入值错误，重新输入')
       else
         ShowMessage('error input.');
       EdStartX.SetFocus();
       exit;
   end;
   value:=StrToFloat(EdStartX.Text);
   if (SelectNo=101) or (SelectNo=102) then
     MvStartX:=value
   else if (SelectNo=105) or (SelectNo=106) then
     X_End:=value;

end;

procedure TDataDlgfrm.EdStartYExit(Sender: TObject);
var value:Double;
begin
   if (EdStartY.Text='') then
   begin
       if lang=1 then
         ShowMessage('输入值错误，重新输入')
       else
         ShowMessage('error input.');
       EdStartX.SetFocus();
       exit;
   end;
   value:=StrToFloat(EdStartY.Text);
   if (SelectNo=101) or (SelectNo=102) then
        MvStartY:=value
   else if (SelectNo=105) or (SelectNo=106) then
        Y_End:=value
   else if (SelectNo=107) then  X_Center:=value
   else if (SelectNo=108) then  X_End:=value
   else if (SelectNo=109) then  Y_Center:=value
   else if (SelectNo=110) then  Y_End:=value
   else if (SelectNo=111) then  Z_Center:=value
   else if (SelectNo=112) then  Z_End:=value;
end;

procedure TDataDlgfrm.EdStartZExit(Sender: TObject);
var value:Double;
begin
   if (EdStartZ.Text='') or ((SelectNo=501) and (StrToFloat(EdStartZ.Text)<=0))then
   begin
       if lang=1 then
         ShowMessage('输入值错误，重新输入')
       else
         ShowMessage('error input.');
       EdStartX.SetFocus();
       exit;
   end;
   value:=StrToFloat(EdStartZ.Text);
   if (SelectNo=101) or (SelectNo=102) then
     MvStartZ:=value
   else if (SelectNo=105) or (SelectNo=106) then
     Z_End:=value
   else if (SelectNo=107) then  Y_Center:=value
   else if (SelectNo=108) then  Y_End:=value
   else if (SelectNo=109) then  Z_Center:=value
   else if (SelectNo=110) then  Z_End:=value
   else if (SelectNo=111) then  X_Center:=value
   else if (SelectNo=112) then  X_End:=value;
end;

procedure TDataDlgfrm.EdSynVelExit(Sender: TObject);
var value:Double;
begin
   if (EdSynVel.Text='') or ((SelectNo=103) and (StrToFloat(EdSynVel.Text)<0)) then
   begin
       if lang=1 then
         ShowMessage('输入值错误，重新输入')
       else
         ShowMessage('error input.');
       EdSynVel.SetFocus();
       exit;
   end;
   value:=StrToFloat(EdSynVel.Text);
   if (SelectNo=103) then  SynVel:=value
   else if (SelectNo=107) or (SelectNo=109) or (SelectNo=111) then
     angle:=value
   else if (SelectNo=108) or (SelectNo=110) or (SelectNo=112) then
     r:=value;
end;

procedure TDataDlgfrm.EdSynAccExit(Sender: TObject);
begin
   if (EdSynAcc.Text='') or (StrToFloat(EdSynAcc.Text)<0)  then
   begin
       if lang=1 then
         ShowMessage('输入值错误，重新输入')
       else
         ShowMessage('error input.');
       EdSynVel.SetFocus();
       exit;
   end;
   SynAcc:=StrToFloat(EdSynAcc.Text);
end;

procedure TDataDlgfrm.EdStartXKeyPress(Sender: TObject; var Key: Char);
begin
   if not (key in DigitsSet) then
   begin
       key:=#0;
       exit;
   end;
end;

procedure TDataDlgfrm.EdStartYKeyPress(Sender: TObject; var Key: Char);
begin
   if not (key in DigitsSet) then
   begin
       key:=#0;
       exit;
   end;
end;

procedure TDataDlgfrm.EdStartZKeyPress(Sender: TObject; var Key: Char);
begin
   if not (key in DigitsSet) then
   begin
       key:=#0;
       exit;
   end;
end;

procedure TDataDlgfrm.EdSynVelKeyPress(Sender: TObject; var Key: Char);
begin
   if not (key in DigitsSet) then
   begin
       key:=#0;
       exit;
   end;
end;

procedure TDataDlgfrm.EdSynAccKeyPress(Sender: TObject; var Key: Char);
begin
   if not (key in DigitsSet) then
   begin
       key:=#0;
       exit;
   end;
end;

procedure TDataDlgfrm.CBDirChange(Sender: TObject);
begin
    if (CBDir.ItemIndex=0) then   dir:=-1
    else dir:=1;
end;

procedure TDataDlgfrm.FormShow(Sender: TObject);
begin
  initControl;
  if lang=1 then
  begin
  	if SelectNo=101 then
  	begin
  	   Caption:='定位二维起点位置,目标速度和加速度';
  	   LbMessage.Caption:='GT_MvXY()用来定位二维坐标系缓冲区命令的起点位置,当启动缓冲区运动时，坐标系各轴从当前位置以直线插补的方式运动到相应起点位置，然后再执行缓冲区命令。';
  	end
  	else  if SelectNo=102 then
  	begin
  	   Caption:='定位三维起点位置,目标速度和加速度';
  	   LbMessage.Caption:='GT_MvXYZ()用来定位三维坐标系缓冲区命令的起点位置,当启动缓冲区运动时，坐标系各轴从当前位置以直线插补的方式运动到相应起点位置，然后再执行缓冲区命令。'
  	end
  	else  if SelectNo=103 then
  	begin
  	   Caption:='设置合成速度';
  	   LbMessage.Caption:='GT_SetSynVel()用来设置轨迹的合成运动速度，其单位是坐标系长度单位/控制周期，为正值。'
  	end
  	else  if SelectNo=104 then
  	begin
  	   Caption:='设置合成加速度';
  	   LbMessage.Caption:='GT_SetSynAcc()用来设置轨迹的合成加速度，对于缓冲区中的连续轨迹运动，该函数不生效，其单位是坐标系长度单位/控制周期＊控制周期，为正值。'
  	end
  	else  if SelectNo=105 then
  	begin
  	   Caption:='二维直线插补运动';
  	   LbMessage.Caption:='GT_LnXY()实现二维直线插补运动。'
  	end
  	else  if SelectNo=106 then
  	begin
  	   Caption:='三维直线插补运动';
  	   LbMessage.Caption:='GT_LnXYZ()实现三维直线插补运动。'
  	end
  	else  if SelectNo=501 then
  	begin
  	   Caption:='修改速度倍率';
  	   LbMessage.Caption:='GT_Ovrride()修改当前的速度倍率，但对GT_LnXYG0和GT_LnXYZG0运动无效。其值为正值。';
  	end
  	else if SelectNo=107 then
  	begin
  	  Caption:='圆弧插补运动';
  	   LbMessage.Caption:='GT_ArcXY()实现XOY平面内的两轴圆弧插补运动，起点坐标是前一段轨迹的终点坐标；旋转角度单位是度，正负代表旋转方向，取值范围为-360~360度。'
  	end
  	else  if SelectNo=108 then
  	begin
  	   Caption:='圆弧插补运动';
  	   LbMessage.Caption:='GT_ArcXYP()实现XOY平面内的两轴圆弧插补运动，起点坐标是前一段轨迹的终点坐标；圆弧半径并带符号，其符号表示此段圆弧是优弧还是劣弧,(正：劣弧，负：优弧)。'
  	end
  	else  if SelectNo=109 then
  	begin
  	   Caption:='圆弧插补运动';
  	   LbMessage.Caption:='GT_ArcYZ()实现YOZ平面内的两轴圆弧插补运动，起点坐标是前一段轨迹的终点坐标；旋转角度单位是度，正负代表旋转方向，取值范围为-360~360度。'
  	end
  	else  if SelectNo=110 then
  	begin
  	   Caption:='圆弧插补运动';
  	   LbMessage.Caption:='GT_ArcYZP()实现YOZ平面内的两轴圆弧插补运动，起点坐标是前一段轨迹的终点坐标；圆弧半径并带符号，其符号表示此段圆弧是优弧还是劣弧,(正：劣弧，负：优弧)。'
  	end
  	else  if SelectNo=111 then
  	begin
  	   Caption:='圆弧插补运动';
  	   LbMessage.Caption:='GT_ArcZX()实现ZOX平面内的两轴圆弧插补运动，起点坐标是前一段轨迹的终点坐标；旋转角度单位是度，正负代表旋转方向，取值范围为-360~360度。'
  	end
  	else  if SelectNo=112 then
  	begin
  	   Caption:='圆弧插补运动';
  	   LbMessage.Caption:='GT_ArcZXP()实现ZOX平面内的两轴圆弧插补运动，起点坐标是前一段轨迹的终点坐标；圆弧半径并带符号，其符号表示此段圆弧是优弧还是劣弧,(正：劣弧，负：优弧)。'
  	end;
  end  else  begin
	if SelectNo=101 then
  	begin
  	   Caption:='Set start point for X and Y';
  	   LbMessage.Caption:='to call GT_MvXY()';
  	end
  	else  if SelectNo=102 then
  	begin
  	   Caption:='Set start poing for X,Y and Z';
  	   LbMessage.Caption:='to call GT_MvXYZ()'
  	end
  	else  if SelectNo=103 then
  	begin
  	   Caption:='Set synthesize velocity ';
  	   LbMessage.Caption:='to call GT_SetSynVel()'
  	end
  	else  if SelectNo=104 then
  	begin
  	   Caption:='Set synthesize accelerate';
  	   LbMessage.Caption:='to call GT_SetSynAcc()'
  	end
  	else  if SelectNo=105 then
  	begin
  	   Caption:='Line interpolation';
  	   LbMessage.Caption:='to call GT_LnXY()'
  	end
  	else  if SelectNo=106 then
  	begin
  	   Caption:='Line interpolation';
  	   LbMessage.Caption:='to calll GT_LnXYZ()'
  	end
  	else  if SelectNo=501 then
  	begin
  	   Caption:='Modify the velocity multiple ';
  	   LbMessage.Caption:='to call GT_Ovrride()';
  	end
  	else if SelectNo=107 then
  	begin
  	  Caption:='Arc interpolation';
  	   LbMessage.Caption:='to call GT_ArcXY()'
  	end
  	else  if SelectNo=108 then
  	begin
  	   Caption:='Arc interpolation';
  	   LbMessage.Caption:='to call GT_ArcXYP()。'
  	end
  	else  if SelectNo=109 then
  	begin
  	   Caption:='Arc interpolation';
  	   LbMessage.Caption:='to call GT_ArcYZ()'
  	end
  	else  if SelectNo=110 then
  	begin
  	   Caption:='Arc interpolation';
  	   LbMessage.Caption:='to call GT_ArcYZP()'
  	end
  	else  if SelectNo=111 then
  	begin
  	   Caption:='Arc interpolation';
  	   LbMessage.Caption:='to call GT_ArcZX()'
  	end
  	else  if SelectNo=112 then
  	begin
  	   Caption:='Arc interpolation';
  	   LbMessage.Caption:='to call GT_ArcZXP()'
  	end;
  end;
end;

procedure TDataDlgfrm.initControl;
begin
   if lang=1 then
   begin
      Button1.Caption:='确定(&o)';
      Button2.Caption:='取消(&c)';
      CBDir.Items.Clear;
      CBDir.Items.Add('顺时针');
      CBDir.Items.Add('逆时针');
   end
   else begin
      Button1.Caption:='Confirm(&o)';
      Button2.Caption:='Cancel(&c)';
      CBDir.Items.Clear;
      CBDir.Items.Add('Clockwise');
      CBDir.Items.Add('anti-clockwise');
   end;

   if dir=1 then  CBDir.ItemIndex:=1
   else CBDir.ItemIndex:=0;

   if (SelectNo=101) or (SelectNo=102) then
     EdStartX.Text:=floatToStr(MvStartX)
   else if (SelectNo=105) or (SelectNo=106) then
     EdStartX.Text:=FloatTostr(X_End);

   if (SelectNo=101) or (SelectNo=102) then
        EdStartY.Text:=floatToStr(MvStartY)
   else if (SelectNo=105) or (SelectNo=106) then
        EdStartY.Text:=floatToStr(Y_End)
   else if (SelectNo=107) then  EdStartY.Text:=floatToStr(X_Center)
   else if (SelectNo=108) then  EdStartY.Text:=floatToStr(X_End)
   else if (SelectNo=109) then  EdStartY.Text:=floatToStr(Y_Center)
   else if (SelectNo=110) then  EdStartY.Text:=floatToStr(Y_End)
   else if (SelectNo=111) then  EdStartY.Text:=floatToStr(Z_Center)
   else if (SelectNo=112) then  EdStartY.Text:=floatToStr(Z_End);

   if (SelectNo=101) or (SelectNo=102) then
     EdStartZ.Text:=floatToStr(MvStartZ)
   else if (SelectNo=105) or (SelectNo=106) then
     EdStartZ.Text:=floatToStr(Z_End)
   else if (SelectNo=107) then  EdStartZ.Text:=floatToStr(Y_Center)
   else if (SelectNo=108) then  EdStartZ.Text:=floatToStr(Y_End)
   else if (SelectNo=109) then  EdStartZ.Text:=floatToStr(Z_Center)
   else if (SelectNo=110) then  EdStartZ.Text:=floatToStr(Z_End)
   else if (SelectNo=111) then  EdStartZ.Text:=floatToStr(X_Center)
   else if (SelectNo=112) then  EdStartZ.Text:=floatToStr(X_End);

   if (SelectNo=103) then  EdSynVel.Text:=FloatToStr(SynVel)
   else if (SelectNo=107) or (SelectNo=109) or (SelectNo=111) then
     EdSynVel.Text:=FloatToStr(angle)
   else if (SelectNo=108) or (SelectNo=110) or (SelectNo=112) then
     EdSynVel.Text:=FloatToStr(r);

   EdSynAcc.Text:=FloatToStr(SynAcc);
end;


end.
