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

📄 config.~pas

📁 求是科技出版的《Delphi串口通信工程开发实例导航》所有的源代码。是一本很好的书。拿出来与大家共享。
💻 ~PAS
字号:
unit Config;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Buttons, mmSystem, CoreData, iniFiles, Account,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, IdPOP3;

type
  TfrmConfig = class(TForm)
    btnOK: TBitBtn;
    btnCancel: TBitBtn;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Label1: TLabel;
    Label2: TLabel;
    GroupBox1: TGroupBox;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    cmbBaudRate: TComboBox;
    cmbParity: TComboBox;
    cmbDatabits: TComboBox;
    cmbStopbits: TComboBox;
    cmbCom: TComboBox;
    GroupBox2: TGroupBox;
    Label9: TLabel;
    edtWaveFile: TEdit;
    btnOpenDlg: TButton;
    btnPlay: TButton;
    Label10: TLabel;
    edtInterval: TEdit;
    Label11: TLabel;
    edtTimeOut: TEdit;
    chkHide: TCheckBox;
    dlgOpenFile: TOpenDialog;
    TabSheet3: TTabSheet;
    GroupBox3: TGroupBox;
    Label3: TLabel;
    edtSMSCenter: TEdit;
    Label12: TLabel;
    RadText: TRadioButton;
    RadPdu: TRadioButton;
    procedure btnOpenDlgClick(Sender: TObject);
    procedure btnPlayClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btnOKClick(Sender: TObject);

    procedure ReadConfig();
    procedure SaveConfig();
    procedure FormCreate(Sender: TObject);      // 释放所有的内存
  private
    { Private declarations }
  public
    { Public declarations }

  end;

var
  frmConfig: TfrmConfig;
  m_Config : TConfigInfo; // 存储检测参数和短信参数设置
  m_Com : TComInfo;       // 串口参数
  m_MainhWnd : HWND;      // 主窗口句柄
implementation

{$R *.dfm}

//
// 弹出打开对话框,选择声音文件
//
procedure TfrmConfig.btnOpenDlgClick(Sender: TObject);
begin
        if dlgOpenFile.Execute then
                edtWaveFile.Text := dlgOpenFile.FileName;
end;

//
// 播放按钮单击事件处理函数
//
procedure TfrmConfig.btnPlayClick(Sender: TObject);
begin
        if edtWaveFile.Text <> '' then
                sndPlaySound(PChar(edtWaveFile.Text), SND_ASYNC);
end;

//
// 窗体显示时触发此事件
//
procedure TfrmConfig.FormShow(Sender: TObject);
var
        strInterval, strTimeOut : string;
begin
        //
        // 初始化 检测参数 属性页
        //
        with m_Config do
        begin
                edtWaveFile.Text := m_WaveFile;

                if m_Interval > 99 then m_Interval := 99;
                if m_Interval < 1 then m_Interval := 1;
                if m_TimeOut > 10 then m_TimeOut := 10;
                if m_TimeOut < 1 then m_TimeOut := 1;

                str(m_Interval, strInterval);
                str(m_Timeout, strTimeOut);
                edtInterval.Text := strInterval;
                edtTimeOut.text := strTimeOut;
                chkHide.Checked := m_Hide;
        end;

        //
        // 初始化 串口参数 属性页
        //
        with m_Com do
        begin
                cmbParity.SelText := m_Parity;
                cmbBaudRate.SelText := m_BaudRate;
                cmbDataBits.SelText := m_DataBits;
                cmbStopBits.SelText := m_StopBits;
                //cmbCom.SelText := m_ComPort;
                if m_ComPort < 1 then
                        m_ComPort := 1
                else if m_ComPort > 4 then
                        m_ComPort := 4;

                cmbCom.ItemIndex := m_ComPort - 1;
        end;

        //
        // 初始化 短信参数 属性页
        //
        with m_Config do
        begin
                edtSMSCenter.Text := m_SMSCenter;
                if m_SMSMode = 'Text' then
                        radText.Checked := True
                else
                        radPdu.Checked := True;
        end;

end;

//
// "确定"按钮单击事件处理函数
//
procedure TfrmConfig.btnOKClick(Sender: TObject);
begin
        //
        // 短信中心完整心检查
        //
        if (length(edtSMSCenter.Text) <> 11) and (length(edtSMSCenter.Text) <> 13) then
        begin
                if MessageBox(self.Handle, '您输入的短信中心可能不正确,仍然继续吗?', '警告', MB_YESNO) = IDNO then
                begin
                        frmConfig.ModalResult := mrNone;
                        exit;
                end;
        end;

        //
        // 保存 检测参数 属性页内容
        //
        with m_Config do
        begin
                m_WaveFile := edtWaveFile.Text;
                m_Interval := StrToInt(edtInterval.Text);
                m_TimeOut := StrToInt(edtTimeOut.Text);
                m_Hide := chkHide.Checked;


                if m_Interval > 99 then m_Interval := 99;
                if m_Interval < 1 then m_Interval := 1;
                if m_TimeOut > 10 then m_TimeOut := 10;
                if m_TimeOut < 1 then m_TimeOut := 1;

        end;

        //
        // 保存 串口参数 属性页内容
        //
        with m_Com do
        begin
                m_BaudRate := cmbBaudRate.Text;
                m_Parity := cmbParity.Text;
                m_DataBits := cmbDataBits.Text;
                m_StopBits := cmbStopBits.Text;
                m_ComPort := cmbCom.ItemIndex + 1;
        end;

        //
        // 保存 短信参数 属性页内容
        //
        if length(edtSMSCenter.Text ) = 11 then
                edtSMSCenter.Text := '86' + edtSMSCenter.Text;

        with m_Config do
        begin
                m_SMSCenter := edtSMSCenter.Text;
                if radText.Checked then
                        m_SMSMode := 'Text'
                else
                        m_SMSMode := 'Pdu';
        end;

        //
        // 保存到文件
        //
        SaveConfig();

end;

//
// 读取设置信息
//
procedure TfrmConfig.ReadConfig;
var
        Configini: TIniFile;
        FileName : string;
begin
        FileName := ExtractFilePath(ParamStr(0)) + 'MailConfig.ini';
        if not FileExists(FileName) then
                exit;

        ConfigIni := TIniFile.Create(FileName);
        with Configini do
        begin
                //
                // 连接参数设置
                //
                m_Config.m_WaveFile := ReadString('POPConfig', 'WaveFile', '');
                m_Config.m_Interval := ReadInteger('POPConfig', 'Interval', 5);
                m_Config.m_TimeOut := ReadInteger('POPConfig', 'Timeout', 2);
                m_Config.m_Hide := ReadBool('POPConfig', 'Hide', True);

                //
                // 串口参数设置
                //
                m_Com.m_BaudRate := ReadString('ComConfig', 'BaudRate', '19200');
                m_Com.m_Parity := ReadString('ComConfig', 'Parity', 'None');
                m_Com.m_DataBits := ReadString('ComConfig', 'DataBits', '8');
                m_Com.m_StopBits := ReadString('ComConfig', 'StopBits', '1');
                m_Com.m_ComPort := ReadInteger('ComConfig', 'ComPort', 1);

                //
                // 短信设置参数
                //
                m_Config.m_SMSCenter := ReadString('SMSConfig', 'SMSC', '13800138000');
                m_Config.m_SMSMode := ReadString('SMSConfig', 'SMSMode', 'Pdu');

        end;
        ConfigIni.Free;
end;

//
// 保存设置信息
//
procedure TfrmConfig.SaveConfig;
var
        Configini: TIniFile;
begin
        ConfigIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'MailConfig.ini');
        with Configini do
        begin
                //
                // 连接参数设置
                //
                WriteString('POPConfig', 'WaveFile', m_Config.m_WaveFile);
                WriteInteger('POPConfig', 'Interval', m_Config.m_Interval);
                WriteInteger('POPConfig', 'Timeout', m_Config.m_TimeOut);
                WriteBool('POPConfig', 'Hide', m_Config.m_Hide);

                //
                // 串口参数设置
                //
                WriteString('ComConfig', 'BaudRate', m_Com.m_BaudRate);
                WriteString('ComConfig', 'Parity', m_Com.m_Parity);
                WriteString('ComConfig', 'DataBits', m_Com.m_DataBits);
                WriteString('ComConfig', 'StopBits', m_Com.m_StopBits);
                WriteInteger('ComConfig', 'ComPort', m_Com.m_ComPort);

                //
                // 短信参数设置
                //
                WriteString('SMSConfig', 'SMSC', m_Config.m_SMSCenter);
                WriteString('SMSConfig', 'SMSMode', m_Config.m_SMSMode);

        end;
        ConfigIni.Free;
end;

//
// 窗体创建时触发此事件
//
procedure TfrmConfig.FormCreate(Sender: TObject);
begin
        //
        // 读取配置信息
        //
        ReadConfig();
        //
        // 向主窗口发送消息,通知主窗口配置信息已经读取完毕
        //
        PostMessage(m_MainhWnd, WM_INIFINISHED, 0, 0);
end;

end.

⌨️ 快捷键说明

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