📄 data.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 + -