parameter.~pas
来自「串口监控程序,可与UPS进行通信,适合初学者使用」· ~PAS 代码 · 共 258 行
~PAS
258 行
unit parameter;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, RzCmboBx, RzButton, Spin, DB, ADODB,
RzDBCmbo, Mask, RzEdit, RzDBEdit, RzDBSpin, RzRadChk, RzDBChk, RzSpnEdt,
ExtCtrls;
type
Tfparameter = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
RzButton1: TRzButton;
RzButton2: TRzButton;
RzButton3: TRzButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Label4: TLabel;
Label5: TLabel;
RzButton4: TRzButton;
RzButton5: TRzButton;
RzButton6: TRzButton;
RzButton7: TRzButton;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
OpenDialog1: TOpenDialog;
RzDBComboBox1: TRzDBComboBox;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
RzDBComboBox2: TRzDBComboBox;
RzDBCheckBox1: TRzDBCheckBox;
RzDBSpinEdit1: TRzDBSpinEdit;
RzDBCheckBox3: TRzDBCheckBox;
RzDBCheckBox4: TRzDBCheckBox;
RzDBCheckBox5: TRzDBCheckBox;
RzDBCheckBox6: TRzDBCheckBox;
RzDBCheckBox7: TRzDBCheckBox;
RzDBCheckBox8: TRzDBCheckBox;
RzDBCheckBox9: TRzDBCheckBox;
RzDBCheckBox10: TRzDBCheckBox;
RzDBSpinEdit2: TRzDBSpinEdit;
RzDBSpinEdit3: TRzDBSpinEdit;
RzDBSpinEdit4: TRzDBSpinEdit;
RzDBSpinEdit5: TRzDBSpinEdit;
Edit2: TEdit;
Timer1: TTimer;
procedure RzButton2Click(Sender: TObject);
procedure RzButton4Click(Sender: TObject);
procedure RzButton5Click(Sender: TObject);
procedure RzButton6Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure RzButton3Click(Sender: TObject);
procedure RzButton1Click(Sender: TObject);
procedure EnumComPorts(Ports: TStrings);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fparameter: Tfparameter;
implementation
uses
message,email,main;
{$R *.dfm}
procedure Tfparameter.RzButton2Click(Sender: TObject);
begin
close;
end;
procedure Tfparameter.RzButton4Click(Sender: TObject);
begin
if opendialog1.Execute then
edit2.Text :=opendialog1.FileName ;
end;
procedure Tfparameter.RzButton5Click(Sender: TObject);
begin
with tfmessage.create(nil) do
begin
showmodal;
free;
end;
end;
procedure Tfparameter.RzButton6Click(Sender: TObject);
begin
with tfemail.create(nil) do
begin
showmodal;
free;
end;
end;
procedure Tfparameter.FormCreate(Sender: TObject);
begin
ADOQuery1.Open;
edit2.Text :=trim(adoquery1.fieldbyname('closetext').AsString );
EnumComPorts(RzDBComboBox2.Items);
end;
procedure Tfparameter.RzButton3Click(Sender: TObject);
begin
adoquery1.Edit ;
ADOquery1.FieldByName('comtype').AsString :=rzdbcombobox1.Text ;
adoquery1.FieldByName('comport').AsString :=rzdbcombobox2.Text ;
adoquery1.FieldByName('intervalsave').AsBoolean := rzdbcheckbox1.Checked ;
//adoquery1.FieldByName('intervaltime').AsInteger :=
adoquery1.FieldByName('warning').AsBoolean :=rzdbcheckbox3.Checked ;
adoquery1.FieldByName('email').AsBoolean :=rzdbcheckbox9.Checked ;
adoquery1.FieldByName('closeorder').AsBoolean := rzdbcheckbox8.Checked ;
adoquery1.FieldByName('closetext').AsString :=trim(edit2.Text) ;
adoquery1.FieldByName('autosave').AsBoolean := rzdbcheckbox7.Checked ;
adoquery1.FieldByName('closesystem').AsBoolean := rzdbcheckbox4.Checked ;
adoquery1.FieldByName('closeoutput').AsBoolean := rzdbcheckbox5.Checked ;
adoquery1.FieldByName('autoshow').AsBoolean := rzdbcheckbox6.Checked ;
adoquery1.Post ;
close;
end;
procedure Tfparameter.RzButton1Click(Sender: TObject);
var
qrytmp:tadoquery;
begin
adoquery1.Edit ;
qrytmp:=tadoquery.Create(self) ;
qrytmp.Connection :=fmain.dbcon ;
qrytmp.SQL.Text :='select * from user_set where type='+'''default''' ;
qrytmp.Open ;
rzdbcombobox1.Text :=qrytmp.fieldbyname('comtype').AsString ;
rzdbcombobox2.Text :=qrytmp.fieldbyname('comport').AsString ;
rzdbcheckbox1.Checked :=qrytmp.FieldByName('intervalsave').AsBoolean ;
rzdbspinedit1.Value :=qrytmp.fieldbyname('intervaltime').AsInteger;
rzdbcheckbox3.Checked :=qrytmp.FieldByName('warning').AsBoolean ;
rzdbcheckbox9.Checked :=qrytmp.FieldByName('email').AsBoolean ;
rzdbcheckbox8.Checked :=qrytmp.FieldByName('closeorder').AsBoolean ;
edit2.Text :=qrytmp.fieldbyname('closetext').AsString ;
rzdbcheckbox7.Checked :=qrytmp.FieldByName('autosave').AsBoolean ;
rzdbcheckbox4.Checked :=qrytmp.FieldByName('closesystem').AsBoolean ;
rzdbcheckbox5.Checked :=qrytmp.FieldByName('closeoutput').AsBoolean ;
rzdbcheckbox6.Checked :=qrytmp.FieldByName('autoshow').AsBoolean ;
rzdbspinedit2.Value :=qrytmp.fieldbyname('acclosetime').AsInteger ;
rzdbspinedit3.Value :=qrytmp.fieldbyname('batteryclose').AsInteger ;
rzdbspinedit4.Value :=qrytmp.fieldbyname('closesystemtime').AsInteger ;
rzdbspinedit5.Value :=qrytmp.fieldbyname('warningtime').AsInteger ;
qrytmp.Free ;
end;
procedure Tfparameter.EnumComPorts(Ports: TStrings);
//procedure EnumComPorts(Ports: TStrings);
var
KeyHandle: HKEY;
ErrCode, Index: Integer;
ValueName, Data: string;
ValueLen, DataLen, ValueType: DWORD;
TmpPorts: TStringList;
begin
ErrCode := RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
'HARDWARE\DEVICEMAP\SERIALCOMM',
0,
KEY_READ,
KeyHandle);
if ErrCode <> ERROR_SUCCESS then
Exit; // raise EComPort.Create(CError_RegError, ErrCode);
TmpPorts := TStringList.Create;
try
Index := 0;
repeat
ValueLen := 256;
DataLen := 256;
SetLength(ValueName, ValueLen);
SetLength(Data, DataLen);
ErrCode := RegEnumValue(
KeyHandle,
Index,
PChar(ValueName),
Cardinal(ValueLen),
nil,
@ValueType,
PByte(PChar(Data)),
@DataLen);
if ErrCode = ERROR_SUCCESS then
begin
SetLength(Data, DataLen);
TmpPorts.Add(Data);
Inc(Index);
end
else
if ErrCode <> ERROR_NO_MORE_ITEMS then
exit; //raise EComPort.Create(CError_RegError, ErrCode);
until (ErrCode <> ERROR_SUCCESS) ;
TmpPorts.Sort;
Ports.Assign(TmpPorts);
finally
RegCloseKey(KeyHandle);
TmpPorts.Free;
end;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?