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;
    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;
 fmain.Refresh ;

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 + -
显示快捷键?