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

📄 paraadd.pas

📁 合成实验的上位机程序
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit ParaAdd;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons, XPMenu, ComCtrls, Grids,
  dxCore, dxButton, Menus, ToolWin, DB, ADODB, ImgList;

type
  TParaAddFrm = class(TForm)
    FrameImg: TImage;
    CaptionLbl: TLabel;
    IconImg: TImage;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    ComboBox1: TComboBox;
    Label3: TLabel;
    Edit1: TEdit;
    Label4: TLabel;
    Edit2: TEdit;
    Panel5: TPanel;
    Image2: TImage;
    Label5: TLabel;
    StringGrid1: TStringGrid;
    Panel6: TPanel;
    Image3: TImage;
    Panel7: TPanel;
    Image4: TImage;
    Panel8: TPanel;
    Image5: TImage;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Panel9: TPanel;
    Image6: TImage;
    StringGrid2: TStringGrid;
    Panel10: TPanel;
    Image7: TImage;
    Label12: TLabel;
    Panel11: TPanel;
    Image8: TImage;
    Label13: TLabel;
    Panel13: TPanel;
    Image10: TImage;
    Label16: TLabel;
    MinSpdBtn: TSpeedButton;
    CloseSpdBtn: TSpeedButton;
    ComboBox2: TComboBox;
    SaveDialog1: TSaveDialog;
    CoolBar1: TCoolBar;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ADODataSet1: TADODataSet;
    ADOConnection1: TADOConnection;
    DataSource1: TDataSource;
    ADODataSet2: TADODataSet;
    DataSource2: TDataSource;
    OpenDialog1: TOpenDialog;
    ImageList1: TImageList;
    Label9: TLabel;
    Label10: TLabel;
    Edit4: TEdit;
    Label11: TLabel;
    ComboBox3: TComboBox;
    ComboBox4: TComboBox;
    ComboBox5: TComboBox;
    procedure FormCreate(Sender: TObject);
    procedure FrameImgMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FrameImgMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FrameImgMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure MinSpdBtnClick(Sender: TObject);
    procedure CloseSpdBtnClick(Sender: TObject);
    procedure StringGrid1Click(Sender: TObject);
    procedure ComboBox2Exit(Sender: TObject);
    procedure dxButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure StringGrid2Click(Sender: TObject);
    procedure StringGrid2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1Change(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure dxButton2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ComboBox5Change(Sender: TObject);
    procedure ComboBox1Enter(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    //求StringGrid1实际最多使用了几行
    function GetGridMaxRow(ACaption: String; AGrid: TStringGrid): Integer;
  public
    //判断输入的是不是一个非负实数
    function IsReal(AStr: String; AKey: Char): Char;
    //判断输入的是不是一个非负整数
    function IsInt(AStr: String; AKey: Char): Char;
    //************************为窗口增加一个任务栏显示****************//
    procedure CreateParams(Var Param:TCreateParams);override;      
  end;

const
  Ks = 0.9996; 

var
  ParaAddFrm: TParaAddFrm;
  golMouseDownFlag2: Boolean;//鼠标是否在标题栏内按下
  golOldMouseX2,golOldMouseY2:Integer;//鼠标按下后的坐标
  oneSave: Integer;//保存次数
  golFileName: pChar;//保存文件路径
  oldDbl: array[0..12] of Double;//临时全局变量
  BaseTime: Double;//基准时间
  TestItem: Integer;//试验类型

implementation

uses Main, ParaData, WaveView;

{$R *.dfm}

//判断输入的是不是一个实数
function TParaAddFrm.IsReal(AStr: String; AKey: Char): Char;
begin
  //只能输入数字和小数点,回车键和退格键
  if (AKey in ['0'..'9','.']) or (AKey=#8) or (AKey=#13) then
  begin
    if AKey='.' then
      if Pos('.',AStr)>0 then
        AKey:=#0;
  end
  else
    AKey:=#0;
  Result:=AKey;
end;

//判断输入的是不是一个非负整数
function TParaAddFrm.IsInt(AStr: String; AKey: Char): Char;
begin
  //只能输入数字,回车键和退格键
  if ((AKey in ['0'..'9']) or (AKey=#8) or (AKey=#13))=False then
    AKey:=#0;
  Result:=AKey;
end;

//求StringGrid实际最多使用了几行
function TParaAddFrm.GetGridMaxRow(ACaption: String; AGrid: TStringGrid): Integer;
var
  MaxRow: Integer;
begin
  if ACaption='(单分试验)' then
  begin
    if AGrid.Name='StringGrid1' then
      MaxRow:=5 else
    if AGrid.Name='StringGrid2' then
      MaxRow:=12;
  end else
  if ACaption='(合分试验)' then
  begin
    if AGrid.Name='StringGrid1' then
      MaxRow:=6 else
    if AGrid.Name='StringGrid2' then
      MaxRow:=13;
  end else
  if ACaption='(重合闸试验)' then
  begin
    if AGrid.Name='StringGrid1' then
      MaxRow:=10 else
    if AGrid.Name='StringGrid2' then
      MaxRow:=23;
  end else
  if ACaption='(动热稳定试验)' then
  begin
    if AGrid.Name='StringGrid1' then
      MaxRow:=1 else
    if AGrid.Name='StringGrid2' then
      MaxRow:=3;
  end;
  Result:=MaxRow;
end;

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

procedure TParaAddFrm.FormCreate(Sender: TObject);
begin
  //初始化
  oneSave:=0;
  //窗体初始化位置及大小
  ParaAddFrm.Left:=MainFrm.Left;
  ParaAddFrm.Top:=126;
  ParaAddFrm.Height:=MainFrm.Height-ParaAddFrm.Top;
  ParaAddFrm.Width:=MainFrm.Width;
  Panel1.Left:=15;
  Panel1.Top:=65;
  Panel1.Width:=995;      
  Panel1.Height:=514;
  //设置试验参数表格的位置及单元格大小
  StringGrid1.ColWidths[0]:=70;
  Panel6.Width:=70;
  StringGrid1.ColWidths[1]:=103;
  Panel7.Width:=103;
  Panel7.Left:=85;
  StringGrid1.ColWidths[2]:=130;
  Panel8.Width:=130;
  Panel8.Left:=189;
  //设置其它参数表格的位置及单元格大小
  StringGrid2.ColWidths[0]:=326;
  StringGrid2.ColWidths[1]:=56;
  Panel10.Left:=15;
  Panel10.Width:=326;
  Panel11.Left:=342;
  Panel11.Width:=56;
end;

procedure TParaAddFrm.FrameImgMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  //**************判断鼠标是否在标题栏,若是则MouseDownFlag为真****************//
  if (X>FrameImg.Left) and (X<(FrameImg.Left+FrameImg.Width)) and
    (Y>FrameImg.Top) and (Y<40) then
  begin
    golMouseDownFlag2:=True;
    golOldMouseX2:=X;
    golOldMouseY2:=Y;
  end;
end;

procedure TParaAddFrm.FrameImgMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  //********若MouseDownFlag为真,则鼠标在标题栏,可以实现窗体的拖动************//
  if golMouseDownFlag2=True then
  begin
    ParaAddFrm.Left:=ParaAddFrm.Left+(X-golOldMouseX2);
    ParaAddFrm.Top:=ParaAddFrm.Top+(Y-golOldMouseY2);
  end;
end;

procedure TParaAddFrm.FrameImgMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  //**************清鼠标按下标志***********//
  golMouseDownFlag2:=False;
end;

procedure TParaAddFrm.MinSpdBtnClick(Sender: TObject);
begin
  //***********窗体最小化*************//
  ParaAddFrm.WindowState:=wsMinimized;
end;

procedure TParaAddFrm.CloseSpdBtnClick(Sender: TObject);
var
  I:Integer;
begin
  for I:=1 to StringGrid1.RowCount do
    if ComboBox3.Text=StringGrid1.Cells[0,I] then
      if MessageBox(ParaAddFrm.Handle,'示波器通道和其它通道冲突,请重新设置!','错误',
        MB_OK+MB_ICONERROR+MB_DEFBUTTON1+MB_APPLMODAL)=IDOK then
       Exit;  
  //关闭添加窗体
  ParaAddFrm.Close;
end;           

procedure TParaAddFrm.StringGrid1Click(Sender: TObject);
var
  tmpStr: String;
begin
  if ComboBox1.Text='单分试验' then
  //如果是单分试验
  begin
    //设置不可编辑的单元格
    if (StringGrid1.Col=0) or (StringGrid1.Col=2) or
      (StringGrid1.Row>7) then
      StringGrid1.Options:=StringGrid1.Options-[goediting]
    else
      StringGrid1.Options:=StringGrid1.Options+[goediting];
    //出现通道选择菜单
    if (StringGrid1.Col=0) and (StringGrid1.Row>0) and (StringGrid1.Row<6) then
      with StringGrid1 do
      begin
        ComboBox2.Visible:=True;
        ComboBox2.SetFocus;
        ComboBox2.Left:=CellRect(Col,Row).Left+14;
        ComboBox2.Top:=CellRect(Col,Row).Top+114;
        ComboBox2.Width:=StringGrid1.ColWidths[0];
        ComboBox2.Height:=StringGrid1.RowHeights[StringGrid1.Row];
      end;
  end;
  if ComboBox1.Text='合分试验' then
  //如果是合分试验
  begin
    //设置不可编辑的单元格
    if (StringGrid1.Col=0) or (StringGrid1.Col=2) or
      (StringGrid1.Row>8) then
      StringGrid1.Options:=StringGrid1.Options-[goediting]
    else
      StringGrid1.Options:=StringGrid1.Options+[goediting];
    //出现通道选择菜单
    if (StringGrid1.Col=0) and (StringGrid1.Row>0) and (StringGrid1.Row<7) then
      with StringGrid1 do
      begin
        ComboBox2.Visible:=True;
        ComboBox2.SetFocus;
        ComboBox2.Left:=CellRect(Col,Row).Left+14;
        ComboBox2.Top:=CellRect(Col,Row).Top+114;
        ComboBox2.Width:=StringGrid1.ColWidths[0];
        ComboBox2.Height:=StringGrid1.RowHeights[StringGrid1.Row];
      end;
  end;
  if ComboBox1.Text='重合闸试验' then
  //如果是重合闸试验
  begin
    //设置不可编辑的单元格

⌨️ 快捷键说明

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