📄 paraadd.pas
字号:
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 + -