frmConfig.pas
上传用户:youjie821
上传日期:2013-01-27
资源大小:459k
文件大小:8k
源码类别:

PlugIns编程

开发平台:

Delphi

  1. unit frmConfig;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls, Mask, RzEdit, RzButton, RzRadChk, RzPanel, RzCmboBx,
  6.   RzLabel, RzTabs, ActnList, ExtCtrls, RzDlgBtn, IniFiles;
  7. type
  8.   TConfigForm = class(TForm)
  9.     RzDialogButtons1: TRzDialogButtons;
  10.     ActionList1: TActionList;
  11.     actOk: TAction;
  12.     actCancel: TAction;
  13.     actHelp: TAction;
  14.     actUserProxy: TAction;
  15.     pcMain: TRzPageControl;
  16.     RzTabSheet1: TRzTabSheet;
  17.     RzLabel1: TRzLabel;
  18.     cbxConnectType: TRzComboBox;
  19.     RzGroupBox2: TRzGroupBox;
  20.     Label4: TLabel;
  21.     Label5: TLabel;
  22.     Label6: TLabel;
  23.     Label7: TLabel;
  24.     chkProxy: TRzCheckBox;
  25.     edtProxyIP: TRzEdit;
  26.     edtProxyPort: TRzEdit;
  27.     edtProxyPass: TRzEdit;
  28.     edtProxyUser: TRzEdit;
  29.     RzTabSheet2: TRzTabSheet;
  30.     Label1: TLabel;
  31.     Label8: TLabel;
  32.     RzGroupBox1: TRzGroupBox;
  33.     Label2: TLabel;
  34.     Label3: TLabel;
  35.     chkAuthentication: TRzCheckBox;
  36.     edtUsername: TRzEdit;
  37.     edtPassword: TRzEdit;
  38.     edtServerIP: TRzEdit;
  39.     edtServerPort: TRzEdit;
  40.     procedure actOkExecute(Sender: TObject);
  41.     procedure actCancelExecute(Sender: TObject);
  42.     procedure actHelpExecute(Sender: TObject);
  43.     procedure chkAuthenticationClick(Sender: TObject);
  44.     procedure cbxConnectTypeChange(Sender: TObject);
  45.     procedure FormCreate(Sender: TObject);
  46.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  47.     procedure chkProxyClick(Sender: TObject);
  48.   private
  49.     { Private declarations }
  50.     procedure EnabledControls(Value: Boolean);
  51.   public
  52.     { Public declarations }
  53.   end;
  54.   TConnectType = (ctDirect, ctNat, ctProxy);
  55.   PConnectInfo = ^TConnectInfo;
  56.   TConnectInfo = record
  57.     ConnectType: TConnectType;
  58.     ProxyIP: string;
  59.     ProxyPort: Integer;
  60.     ProxyUser: string;
  61.     ProxyPass: string;
  62.   end;
  63.   TLiveUpdateInfo = record
  64.     ServerIP: string;
  65.     ServerPort: Integer;
  66.     Username: string;
  67.     Password: string;
  68.     Project: string;
  69.   end;
  70.   TSettings = class(TObject)
  71.   private
  72.     FConnectInfo: TConnectInfo;
  73.     FLiveUpdateInfo: TLiveUpdateInfo;
  74.     FIniFile: TIniFile;
  75.     procedure SaveToFile;
  76.     procedure LoadFromFile;
  77.   public
  78.     constructor Create(FileName: string);
  79.     destructor Destroy; override;
  80.     property ConnectInfo: TConnectInfo read FConnectInfo;
  81.     property LiveUpdateInfo: TLiveUpdateInfo read FLiveUpdateInfo;
  82.   end;
  83.   TApp = class(TObject)
  84.   private
  85.     FSettings: TSettings;
  86.   public
  87.     constructor Create;
  88.     destructor Destroy; override;
  89.     property Settings: TSettings read FSettings;
  90.   end;
  91.   function GetApp: TApp;
  92.   procedure ShowConfigForm;
  93. implementation
  94. {$R *.dfm}
  95. var
  96.   G_App: TApp = nil;
  97. function GetApp;
  98. begin
  99.   if G_App = nil then
  100.     G_App:= TApp.Create;
  101.   Result:= G_App;
  102. end;
  103. procedure ShowConfigForm;
  104. begin
  105.   with TConfigForm.Create(nil) do
  106.   try
  107.     ShowModal;
  108.   finally
  109.     Free;
  110.   end;
  111. end;
  112. procedure TConfigForm.actOkExecute(Sender: TObject);
  113. begin
  114.   ModalResult:= mrOk;
  115. end;
  116. procedure TConfigForm.actCancelExecute(Sender: TObject);
  117. begin
  118.   ModalResult:= mrCancel;
  119. end;
  120. procedure TConfigForm.actHelpExecute(Sender: TObject);
  121. begin
  122.   MessageBox(0, '显示 LiveUpdate 的帮助信息', '提示', MB_ICONINFORMATION or MB_OK)
  123. end;
  124. procedure TConfigForm.chkAuthenticationClick(Sender: TObject);
  125. begin
  126.   edtUsername.Enabled:= chkAuthentication.Checked;
  127.   edtPassword.Enabled:= chkAuthentication.Checked;
  128. end;
  129. procedure TConfigForm.cbxConnectTypeChange(Sender: TObject);
  130. begin
  131.   chkProxy.Enabled:= cbxConnectType.ItemIndex = 1;
  132.   EnabledControls(chkProxy.Enabled);
  133. end;
  134. procedure TConfigForm.FormCreate(Sender: TObject);
  135. begin
  136.   with GetApp.Settings.ConnectInfo do
  137.   begin
  138.     case ConnectType of
  139.       ctDirect:
  140.       begin
  141.         cbxConnectType.ItemIndex:= 0;
  142.         chkProxy.Enabled:= False;
  143.       end;
  144.       ctNat:
  145.       begin
  146.         cbxConnectType.ItemIndex:= 1;
  147.         chkProxy.Enabled:= True;
  148.         EnabledControls(False);
  149.       end;
  150.       ctProxy:
  151.       begin
  152.         cbxConnectType.ItemIndex:= 1;
  153.         chkProxy.Enabled:= True;
  154.         EnabledControls(True);
  155.       end;
  156.     end;
  157.     edtProxyIP.Text:= ProxyIP;
  158.     edtProxyPort.Text:= IntToStr(ProxyPort);
  159.     edtProxyUser.Text:= ProxyUser;
  160.     edtProxyPass.Text:= ProxyPass;
  161.   end;
  162.   with GetApp.Settings.LiveUpdateInfo do
  163.   begin
  164.     edtServerIP.Text:= ServerIP;
  165.     edtServerPort.Text:= IntToStr(ServerPort);
  166.     edtUsername.Text:= Username;
  167.     edtPassword.Text:= Password;
  168.   end;
  169.   pcMain.ActivePageIndex:= 0;
  170. end;
  171. procedure TConfigForm.FormClose(Sender: TObject; var Action: TCloseAction);
  172. begin
  173.   if ModalResult = mrOk then
  174.   begin
  175.     with GetApp.Settings.ConnectInfo do
  176.     begin
  177.       case cbxConnectType.ItemIndex of
  178.         0: ConnectType:= ctDirect;
  179.         1:
  180.         begin
  181.           if chkProxy.Checked then
  182.           begin
  183.             ConnectType:= ctProxy;
  184.             ProxyIP:= edtProxyIP.Text;
  185.             ProxyPort:= StrToInt(edtProxyPort.Text);
  186.             ProxyUser:= edtProxyUser.Text;
  187.             ProxyPass:= edtProxyPass.Text;
  188.           end
  189.           else
  190.             ConnectType:= ctNat;
  191.         end;
  192.       end;
  193.     end;
  194.     with GetApp.Settings.LiveUpdateInfo do
  195.     begin
  196.       ServerIP:= edtServerIP.Text;
  197.       ServerPort:= StrToInt(edtServerPort.Text);
  198.       if chkAuthentication.Checked then
  199.       begin
  200.         Username:= edtUsername.Text;
  201.         Password:= edtPassword.Text;
  202.       end
  203.       else
  204.       begin
  205.         Username:= '';
  206.         Password:= '';
  207.       end;
  208.     end;
  209.   end;
  210. end;
  211. procedure TConfigForm.chkProxyClick(Sender: TObject);
  212. begin
  213.   edtProxyIP.Enabled:= chkProxy.Checked;
  214.   edtProxyPort.Enabled:= chkProxy.Checked;
  215.   edtProxyUser.Enabled:= chkProxy.Checked;
  216.   edtProxyPass.Enabled:= chkProxy.Checked;
  217. end;
  218. { TSettings }
  219. constructor TSettings.Create(FileName: string);
  220. begin
  221.   FIniFile:= TIniFile.Create(FileName);
  222.   LoadFromFile;
  223. end;
  224. destructor TSettings.Destroy;
  225. begin
  226.   SaveToFile;
  227.   FIniFile.Free;
  228.   inherited Destroy;
  229. end;
  230. procedure TSettings.LoadFromFile;
  231. begin
  232.   with FConnectInfo do
  233.   begin
  234.     ConnectType:= TConnectType(FIniFile.ReadInteger('Connection', 'ConnectType', 0));
  235.     ProxyIP:= FIniFile.ReadString('Connection', 'ProxyIP', '');
  236.     ProxyPort:= FIniFile.ReadInteger('Connection', 'ProxyPort', 0);
  237.     ProxyUser:= FIniFile.ReadString('Connection', 'ProxyUser', '');
  238.     ProxyPass:= FIniFile.ReadString('Connection', 'ProxyPass', '');
  239.   end;
  240.   with FLiveUpdateInfo do
  241.   begin
  242.     ServerIP:= FIniFile.ReadString('LiveUpdate', 'ServerIP', '');
  243.     ServerPort:= FIniFile.ReadInteger('LiveUpdate', 'ServerPort', 0);
  244.     Username:= FIniFile.ReadString('LiveUpdate', 'Username', '');
  245.     Password:= FIniFile.ReadString('LiveUpdate', 'Password', '');
  246.     Project:= FIniFile.ReadString('LiveUpdate', 'Project', '短信客户端');
  247.   end;
  248. end;
  249. procedure TSettings.SaveToFile;
  250. begin
  251.   with FConnectInfo do
  252.   begin
  253.     FIniFile.WriteInteger('Connection', 'ConnectType', Integer(ConnectType));
  254.     FIniFile.WriteString('Connection', 'ProxyIP', ProxyIP);
  255.     FIniFile.WriteInteger('Connection', 'ProxyPort', ProxyPort);
  256.     FIniFile.WriteString('Connection', 'ProxyUser', ProxyUser);
  257.     FIniFile.WriteString('Connection', 'ProxyPass', ProxyPass);
  258.   end;
  259.   with FLiveUpdateInfo do
  260.   begin
  261.     FIniFile.WriteString('LiveUpdate', 'ServerIP', ServerIP);
  262.     FIniFile.WriteInteger('LiveUpdate', 'ServerPort', ServerPort);
  263.     FIniFile.WriteString('LiveUpdate', 'Username', Username);
  264.     FIniFile.WriteString('LiveUpdate', 'Password', Password);
  265.     FIniFile.WriteString('LiveUpdate', 'Project', Project);
  266.   end;
  267. end;
  268. { TApp }
  269. constructor TApp.Create;
  270. begin
  271.   FSettings:= TSettings.Create(ExtractFilePath(Application.ExeName) + 'Client.ini');
  272. end;
  273. destructor TApp.Destroy;
  274. begin
  275.   FSettings.Free;
  276.   inherited Destroy;
  277. end;
  278. procedure TConfigForm.EnabledControls(Value: Boolean);
  279. begin
  280.   edtProxyIP.Enabled:= Value and chkProxy.Checked;
  281.   edtProxyPort.Enabled:= Value and chkProxy.Checked;
  282.   edtProxyUser.Enabled:= Value and chkProxy.Checked;
  283.   edtProxyPass.Enabled:= Value and chkProxy.Checked;
  284. end;
  285. end.