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

📄 configfrm.pas

📁 单片机典型系统设计实例精讲 第4章 PC机与数控机床通信系统
💻 PAS
字号:
{
=====================================================================
* 软件名称:PC与数控机床通信程序
* 单元名称:配置文件
* 单元作者:彭为 (pwzyp@fjsm.net)
* 备    注:用到了线程进行发送
* 开发平台:PWin2000 SERVER + Delphi 7.0
* 兼容测试:PWin9X/2000/XP + Delphi 6/7
* 采用控件:Raize 3.12 ,SPCOMM
* 修改记录:V1.0  by pengwei
=====================================================================
}
unit ConfigFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, RzButton, Mainfrm, Grids, ValEdit,
  inifiles, RzShellDialogs, Mask, RzEdit;

type
  TConfig = class(TForm)
    Label1: TLabel;
    RzBitBtn1: TRzBitBtn;
    cboComm: TComboBox;
    Label2: TLabel;
    edtPath: TRzEdit;
    SelectFolder: TRzSelectFolderDialog;
    RzBitBtn2: TRzBitBtn;
    Label3: TLabel;
    edtDelay: TRzNumericEdit;
    Label4: TLabel;
    vlEdt: TValueListEditor;
    Label5: TLabel;
    Bevel1: TBevel;
    Bevel2: TBevel;
    RzBitBtn3: TRzBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure RzBitBtn1Click(Sender: TObject);
    procedure RzBitBtn2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure RzBitBtn3Click(Sender: TObject);
  private
    FChannelList: TStrings;
    FInifile: TIniFile;
    function GetCommname: string;
    function GetReceivedPath: string;
    procedure SetCommname(Commname: string);
    procedure SaveConfigInfo;
    procedure SetReceivedPath(const Value: string);
    function GetDelayTime: Integer;
    procedure SetDelayTime(const Value: Integer);
    function GetChannelList: TStrings;

    { Private declarations }
  public
    property ChannelList: TStrings read GetChannelList;
    property CommName: string read GetCommname write SetCommname;
    property ReceivedPath: string read GetReceivedPath write SetReceivedPath;
    property Delaytime: Integer read GetDelayTime write SetDelayTime;
    procedure ShowForm;
    { Public declarations }
  end;

var
  Config: TConfig;

implementation

uses Include;

{$R *.dfm}

procedure TConfig.FormCreate(Sender: TObject);
begin
  Caption := sConfigCaption;
  FInifile := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Comm.ini');
  FChannelList := TStringList.Create;
end;

procedure TConfig.ShowForm;
begin
  if Config = nil then
    Config := TConfig.Create(Self);
  Config.ShowModal;
end;

function TConfig.GetCommname: string;
begin
  Result := FInifile.ReadString('CONFIG', 'Comm', 'COM1');
end;

procedure TConfig.SetCommname(Commname: string);
begin
  FInifile.WriteString('CONFIG', 'Comm', Trim(Commname));
end;

procedure TConfig.FormDestroy(Sender: TObject);
begin
  FInifile.Free;
  FChannelList.Free;
end;

procedure TConfig.SaveConfigInfo;
var
  I: Integer;
  temp: string;
begin
  CommName := cboComm.Text;
  ReceivedPath := Trim(edtPath.Text);
  Delaytime := StrToInt(edtDelay.Text);
  //save valueedit info
  for i := 1 to MaxChannels do
  begin
    Temp := vlEdt.Values[intTostr(i)];
    if Trim(Temp) <> '' then
      FInifile.WriteString('CONFIG', 'Machine' + intTostr(i), Temp)
    else
    begin
      if FInifile.ReadString('CONFIG', 'Machine' + intTostr(i), '') <> '' then
        FInifile.DeleteKey('CONFIG', 'Machine' + intTostr(i));
    end;
  end;
end;

procedure TConfig.RzBitBtn1Click(Sender: TObject);
begin
  SaveConfigInfo;
  Close;
end;

function TConfig.GetReceivedPath: string;
begin
  Result := FInifile.ReadString('CONFIG', 'ReceivedPath',
    ExtractFilePath(ParamStr(0)));
end;

procedure TConfig.SetReceivedPath(const Value: string);
begin
  FInifile.WriteString('CONFIG', 'ReceivedPath', Trim(value));
end;

procedure TConfig.RzBitBtn2Click(Sender: TObject);
begin
  SelectFolder.SelectedPathName := ReceivedPath;
  if SelectFolder.Execute then
  begin
    if Trim(SelectFolder.SelectedPathName) <> '' then
      edtPath.Text := SelectFolder.SelectedPathName;
  end;
end;

procedure TConfig.FormShow(Sender: TObject);
var
  i: Integer;
  temp: string;
begin
  cboComm.ItemIndex := cboComm.Items.IndexOf(CommName);
  edtPath.Text := ReceivedPath;
  edtDelay.Value := Delaytime;
  //init valueedit
  vlEdt.Strings.Clear; //初始化输入框
  vlEdt.TitleCaptions.Clear;
  vlEdt.TitleCaptions.Add(sKey);
  vlEdt.TitleCaptions.Add(sValue);
  for i := 1 to MaxChannels do
    vledt.InsertRow(intTostr(i), '', true);
  for i := 1 to MaxChannels do
  begin
    Temp := FInifile.ReadString('CONFIG', 'Machine' + intTostr(i), '');
    if Temp <> '' then
      vlEdt.Values[intTostr(i)] := Temp;
  end;

end;

function TConfig.GetDelayTime: Integer;
begin
  Result := FInifile.ReadInteger('CONFIG', 'DelayTime', 50);
end;

procedure TConfig.SetDelayTime(const Value: Integer);
begin
  FInifile.WriteInteger('CONFIG', 'DelayTime', value);
  ;
end;

procedure TConfig.RzBitBtn3Click(Sender: TObject);
begin
  Close;
end;

function TConfig.GetChannelList: TStrings;
var
  I: Integer;
begin
  FChannelList.Clear;
  for i := 1 to MaxChannels do
  begin
    FChannelList.Add(intTostr(i) + '--' + FInifile.ReadString('CONFIG', 'Machine'
      +
      intTostr(i),
      '未命名设备'))
  end;
  Result := FChannelList;
end;

end.

⌨️ 快捷键说明

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