⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 data.pas

📁 合成实验的上位机程序
💻 PAS
字号:
unit Data;

interface

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

type
  TDataFrm = class(TForm)
    Edit2: TEdit;
    Label3: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit5: TEdit;
    ComboBox1: TComboBox;
    dxButton1: TdxButton;
    dxButton2: TdxButton;
    dxButton3: TdxButton;
    Label7: TLabel;
    Edit6: TEdit;
    procedure dxButton2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure dxButton1Click(Sender: TObject);
    procedure dxButton3Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure Edit5KeyPress(Sender: TObject; var Key: Char);
    procedure Edit6KeyPress(Sender: TObject; var Key: Char); 
    //************************为窗口增加一个任务栏显示****************//
    procedure CreateParams(Var Param:TCreateParams);override; 
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DataFrm: TDataFrm;

implementation

uses ParaAdd,Main;

{$R *.dfm}

procedure TDataFrm.CreateParams(Var Param:TCreateParams);
begin
  //************************为数据设置窗口增加一个任务栏显示****************//
  Inherited CreateParams(Param);
  Param.wndParent:= GetDesktopWindow;
end;

procedure TDataFrm.dxButton2Click(Sender: TObject);
begin
  Close;
end;

procedure TDataFrm.FormShow(Sender: TObject);
begin
  Edit1.Text:='';  
  Edit2.Text:='0';
  Edit3.Text:='0';
  Edit4.Text:='0';
  Edit5.Text:='0';  
  Edit6.Text:='0';
  ComboBox1.ItemIndex:=-1;
end;

procedure TDataFrm.FormCreate(Sender: TObject);
var
  I:Integer;
begin
  with ComboBox1.Items do
  begin
    BeginUpdate;
    Clear;
    for I:=1 to 32 do
      Add('控制'+IntToStr(I));
    Add('高压1~4');
    Add('延弧1~4');
    EndUpdate;
  end;
end;

procedure TDataFrm.dxButton1Click(Sender: TObject);
var
  Flag:Boolean;
  I:Integer;
begin
  //保存后关闭参数输入窗体
  if (ComboBox1.Text='') or
    (Trim(Edit1.Text)='') or
    (Trim(Edit2.Text)='') or
    (Trim(Edit3.Text)='') or
    (Trim(Edit4.Text)='') or
    (Trim(Edit5.Text)='') or
    (Trim(Edit6.Text)='') then
    if MessageBox(DataFrm.Handle,'输入参数不完整,请检查后重新输入!', '错误', MB_OK+MB_ICONERROR)=IDOK then
      Exit;
    I:=ComboBox1.ItemIndex;
    if I=32 then
    begin
      if Main.cnnHighImg[1].Tag=100 then
      begin
        if MessageBox(DataFrm.Handle,'该通道已经使用,请另选通道!', '错误', MB_OK+MB_ICONERROR)=IDOK then
          Exit;
      end
      else
        Main.cnnHighImg[1].Tag:=100;
    end
    else
      if I=33 then
      begin
      if Main.cnnArcImg[1].Tag=101 then
      begin
        if MessageBox(DataFrm.Handle,'该通道已经使用,请另选通道!', '错误', MB_OK+MB_ICONERROR)=IDOK then
          Exit;
      end
      else
        Main.cnnArcImg[1].Tag:=101
      end
      else
        if Main.cnnConImg[I+1].Tag=I+1 then
        begin
          if MessageBox(DataFrm.Handle,'该通道已经使用,请另选通道!', '错误', MB_OK+MB_ICONERROR)=IDOK then
            Exit;
        end
        else
          Main.cnnConImg[I+1].Tag:=I;
  with ParaAddFrm.ADODataSet1 do
    if RecordCount<12 then
    begin
      Insert;
      try
        FieldByName('第一段高电平持续时间').AsFloat:=StrToFloat(Edit4.Text);
        if FieldByName('第一段高电平持续时间').AsFloat<>0 then
        begin
          FieldByName('第一段高电平起始时间').AsFloat:=StrToFloat(Edit2.Text)+
                                                       StrToFloat(Edit3.Text);
          FieldByName('第一段脉冲宽度(ms)').AsFloat:=(StrToFloat(Edit3.Text)+
            StrToFloat(ParaAddFrm.ComboBox4.Text))*ParaAdd.Ks*100;
          FieldByName('第二段脉冲宽度(ms)').AsFloat:=(StrToFloat(Edit4.Text)+
            StrToFloat(ParaAddFrm.ComboBox4.Text))*ParaAdd.Ks*100;
        end
        else
        begin
          FieldByName('第一段高电平起始时间').AsFloat:=0;
          FieldByName('第一段脉冲宽度(ms)').AsFloat:=0;
          FieldByName('第二段脉冲宽度(ms)').AsFloat:=0;
        end;
        FieldByName('第二段高电平持续时间').AsFloat:=StrToFloat(Edit6.Text);
        if FieldByName('第二段高电平持续时间').AsFloat<>0 then
        begin
          FieldByName('第二段高电平起始时间').AsFloat:=StrToFloat(Edit2.Text)+
                                                       StrToFloat(Edit3.Text)+
                                                       StrToFloat(Edit4.Text)+
                                                       StrToFloat(Edit5.Text);
          FieldByName('第三段脉冲宽度(ms)').AsFloat:=(StrToFloat(Edit5.Text)+
            StrToFloat(ParaAddFrm.ComboBox4.Text))*ParaAdd.Ks*100;
          FieldByName('第四段脉冲宽度(ms)').AsFloat:=(StrToFloat(Edit6.Text)+
            StrToFloat(ParaAddFrm.ComboBox4.Text))*ParaAdd.Ks*100;
        end
        else
        begin
          FieldByName('第二段高电平起始时间').AsFloat:=0;
          FieldByName('第三段脉冲宽度(ms)').AsFloat:=0;
          FieldByName('第四段脉冲宽度(ms)').AsFloat:=0;
        end;
      except
        if MessageBox(DataFrm.Handle,'时间必须为整数!', '错误', MB_OK+MB_ICONERROR)=IDOK then
           Exit;
      end;
      FieldByName('通道功能').AsString:=Edit1.Text;
      FieldByName('通道序号').AsString:=ComboBox1.Text;
      FieldByName('No').AsInteger:=1;
      repeat
        try
          Post;
          Flag:=True;
        except
          FieldByName('No').AsInteger:=FieldByName('No').AsInteger+1;
          Flag:=False;
        end;
      until Flag=True;
    end;
  dxButton1.Enabled:=False;   
  dxButton3.Enabled:=False;
  with ComboBox1.Items do
  begin
    BeginUpdate;
    Clear;
    for I:=1 to 32 do
      Add('控制'+IntToStr(I));
    Add('高压1~4');
    Add('延弧1~4');
    EndUpdate;
    ComboBox1.ItemIndex:=-1;
  end;
  Close;
end;

procedure TDataFrm.dxButton3Click(Sender: TObject);
var
  Flag:Boolean;
  I:Integer;
begin
  //保存后不关闭参数输入窗体
  if (ComboBox1.Text='') or
    (Trim(Edit1.Text)='') or
    (Trim(Edit2.Text)='') or
    (Trim(Edit3.Text)='') or
    (Trim(Edit4.Text)='') or
    (Trim(Edit5.Text)='') or
    (Trim(Edit6.Text)='') then
    if MessageBox(DataFrm.Handle,'输入参数不完整,请检查后重新输入!', '错误', MB_OK+MB_ICONERROR)=IDOK then
      Exit;
    I:=ComboBox1.ItemIndex;
    if I=32 then
    begin
      if Main.cnnHighImg[1].Tag=100 then
      begin
        if MessageBox(DataFrm.Handle,'该通道已经使用,请另选通道!', '错误', MB_OK+MB_ICONERROR)=IDOK then
          Exit;
      end
      else
        Main.cnnHighImg[1].Tag:=100;
    end
    else
      if I=33 then
      begin
      if Main.cnnArcImg[1].Tag=101 then
      begin
        if MessageBox(DataFrm.Handle,'该通道已经使用,请另选通道!', '错误', MB_OK+MB_ICONERROR)=IDOK then
          Exit;
      end
      else
        Main.cnnArcImg[1].Tag:=101
      end
      else
        if Main.cnnConImg[I+1].Tag=I then
        begin
          if MessageBox(DataFrm.Handle,'该通道已经使用,请另选通道!', '错误', MB_OK+MB_ICONERROR)=IDOK then
            Exit;
        end
        else
          Main.cnnConImg[I+1].Tag:=I;
  with ParaAddFrm.ADODataSet1 do
    if RecordCount<12 then
    begin
      Insert;
      try
        FieldByName('第一段高电平持续时间').AsFloat:=StrToFloat(Edit4.Text);
        if FieldByName('第一段高电平持续时间').AsFloat<>0 then
        begin
          FieldByName('第一段高电平起始时间').AsFloat:=StrToFloat(Edit2.Text)+
                                                       StrToFloat(Edit3.Text);
          FieldByName('第一段脉冲宽度(ms)').AsFloat:=(StrToFloat(Edit3.Text)+
            StrToFloat(ParaAddFrm.ComboBox4.Text))*ParaAdd.Ks*100;
          FieldByName('第二段脉冲宽度(ms)').AsFloat:=(StrToFloat(Edit4.Text)+
            StrToFloat(ParaAddFrm.ComboBox4.Text))*ParaAdd.Ks*100;
        end
        else
        begin
          FieldByName('第一段高电平起始时间').AsFloat:=0;
          FieldByName('第一段脉冲宽度(ms)').AsFloat:=0;
          FieldByName('第二段脉冲宽度(ms)').AsFloat:=0;
        end;
        FieldByName('第二段高电平持续时间').AsFloat:=StrToFloat(Edit6.Text);
        if FieldByName('第二段高电平持续时间').AsFloat<>0 then
        begin
          FieldByName('第二段高电平起始时间').AsFloat:=StrToFloat(Edit2.Text)+
                                                       StrToFloat(Edit3.Text)+
                                                       StrToFloat(Edit4.Text)+
                                                       StrToFloat(Edit5.Text);
          FieldByName('第三段脉冲宽度(ms)').AsFloat:=(StrToFloat(Edit5.Text)+
            StrToFloat(ParaAddFrm.ComboBox4.Text))*ParaAdd.Ks*100;
          FieldByName('第四段脉冲宽度(ms)').AsFloat:=(StrToFloat(Edit6.Text)+
            StrToFloat(ParaAddFrm.ComboBox4.Text))*ParaAdd.Ks*100;
        end
        else
        begin
          FieldByName('第二段高电平起始时间').AsFloat:=0;
          FieldByName('第三段脉冲宽度(ms)').AsFloat:=0;
          FieldByName('第四段脉冲宽度(ms)').AsFloat:=0;
        end;
      except
        if MessageBox(DataFrm.Handle,'时间必须为整数!', '错误', MB_OK+MB_ICONERROR)=IDOK then
           Exit;
      end;
      FieldByName('通道功能').AsString:=Edit1.Text;
      FieldByName('通道序号').AsString:=ComboBox1.Text;
      FieldByName('No').AsInteger:=1;
      repeat
        try
          Post;
          Flag:=True;
        except
          FieldByName('No').AsInteger:=FieldByName('No').AsInteger+1;
          Flag:=False;
        end;
      until Flag=True;
    end;
  dxButton1.Enabled:=False;   
  dxButton3.Enabled:=False;
  with ComboBox1.Items do
  begin
    BeginUpdate;
    Clear;
    for I:=1 to 32 do
      Add('控制'+IntToStr(I));
    Add('高压1~4');
    Add('延弧1~4');
    EndUpdate;
    ComboBox1.ItemIndex:=-1;
  end;
end;

procedure TDataFrm.ComboBox1Change(Sender: TObject);
var
  I:Integer;
  Str:String;
begin
  if ComboBox1.Text=ParaAddFrm.ComboBox3.Text then
    if MessageBox(DataFrm.Handle,'该通道已经被示波器通道使用,请重新选择!', '错误', MB_OK+MB_ICONERROR)=IDOK then
    begin
      ComboBox1.ItemIndex:=-1;
      Exit;
    end;
  Str:='';
  ParaAddFrm.ADODataSet1.First;
  if ParaAddFrm.ADODataSet1.RecordCount>0 then
    for I:=1 to ParaAddFrm.ADODataSet1.RecordCount do
    begin
      Str:=ParaAddFrm.ADODataSet1.FieldByName('通道序号').AsString;
      if Str=ComboBox1.Text then
      begin
        if MessageBox(DataFrm.Handle,'该通道已经被使用,请重新选择!', '错误', MB_OK+MB_ICONERROR)=IDOK then
        begin
          ComboBox1.ItemIndex:=-1;
          Exit;
        end;
      end
      else
        ParaAddFrm.ADODataSet1.Next;
  end;
  //保存继续按钮可用
  if (ComboBox1.Text='') or
    (Trim(Edit1.Text)='') or
    (Trim(Edit2.Text)='') or
    (Trim(Edit3.Text)='') or
    (Trim(Edit4.Text)='') or
    (Trim(Edit5.Text)='') or
    (Trim(Edit6.Text)='') then
  begin
    dxButton1.Enabled:=False;
    dxButton3.Enabled:=False;
  end
  else
  begin
    dxButton1.Enabled:=True;
    dxButton3.Enabled:=True;
  end;
end;

procedure TDataFrm.Edit2KeyPress(Sender: TObject; var Key: Char);
var
  Str: String;
  I: Integer;
begin
  //只能输入数字
  if key in ['0'..'9'] then
  begin
    Str:=Edit2.Text;
    if (key='.') and (Length(Str)>0) then
      for I:=1 to Length(Str) do
        if Str[I]='.' then
          Key:=#0;
  end
  else
    //允许回车键和退格键
    if (key<>#8) and (key<>#13) then
      key:=#0;
end;

procedure TDataFrm.Edit3KeyPress(Sender: TObject; var Key: Char);
var
  Str: String;
  I: Integer;
begin
  //只能输入数字
  if key in ['0'..'9'] then
  begin
    Str:=Edit3.Text;
    if (key='.') and (Length(Str)>0) then
      for I:=1 to Length(Str) do
        if Str[I]='.' then
          Key:=#0;
  end
  else
    //允许回车键和退格键
    if (key<>#8) and (key<>#13) then
      key:=#0;
end;

procedure TDataFrm.Edit4KeyPress(Sender: TObject; var Key: Char);
var
  Str: String;
  I: Integer;
begin
  //只能输入数字
  if key in ['0'..'9'] then
  begin
    Str:=Edit4.Text;
    if (key='.') and (Length(Str)>0) then
      for I:=1 to Length(Str) do
        if Str[I]='.' then
          Key:=#0;
  end
  else
    //允许回车键和退格键
    if (key<>#8) and (key<>#13) then
      key:=#0;
end;

procedure TDataFrm.Edit5KeyPress(Sender: TObject; var Key: Char);
var
  Str: String;
  I: Integer;
begin
  //只能输入数字
  if key in ['0'..'9'] then
  begin
    Str:=Edit5.Text;
    if (key='.') and (Length(Str)>0) then
      for I:=1 to Length(Str) do
        if Str[I]='.' then
          Key:=#0;
  end
  else
    //允许回车键和退格键
    if (key<>#8) and (key<>#13) then
      key:=#0;
end;

procedure TDataFrm.Edit6KeyPress(Sender: TObject; var Key: Char);
var
  Str: String;
  I: Integer;
begin
  //只能输入数字
  if key in ['0'..'9'] then
  begin
    Str:=Edit6.Text;
    if (key='.') and (Length(Str)>0) then
      for I:=1 to Length(Str) do
        if Str[I]='.' then
          Key:=#0;
  end
  else
    //允许回车键和退格键
    if (key<>#8) and (key<>#13) then
      key:=#0;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -