📄 prefs.pas
字号:
//
// This unit provides the interface for setting preferences for the
//
//
// (c) Synet Software 2001
//
// When Who Why
// --------- --- ------------------------------------------------------------
// 2001.6.7 century Initial version
//
unit prefs;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Buttons, Registry, ComCtrls, DbTables, CheckLst,
FileCtrl, inifiles,
// 3rd party,
utils, Db, ADODB;
//
// Record for storing preferences & settings
//
type TPrefs = record
PREFS_CW:string;
PREFS_CK:string;
PREFS_GZ:string;
PREFS_RS:string;
PREFS_DO:string;
PREFS_JD:string;
PREFS_TZ:string;
PREFS_DBSERVER:string;
PREFS_DBUSERNAME:string;
PREFS_DBPASSWORD:string;
PREFS_DBDBName:String;
PREFS_HIDE:Boolean;
end;
//
// Globals
//
var
g_Prefs: TPrefs; // Preferences for DCOM object
DEF_DBSERVER:String;
//
// Global functions
//
procedure LoadSettings;
procedure SaveSettings;
function OpenSettings(var section: String): TRegIniFile;
function SettingsInitialised: Boolean;
procedure SetPreferences;
function GetCompname:string;
//
// Class (Form)
//
type
TdlgPreferences = class(TForm)
PageControl: TPageControl;
tsLog: TTabSheet;
tsConnection: TTabSheet;
stDbServer: TStaticText;
eDBServer: TEdit;
stAppUsername: TStaticText;
stAppPassword: TStaticText;
eDBUsername: TEdit;
eDBPassword: TEdit;
tsTuning: TTabSheet;
bTestCon: TBitBtn;
sbDBServer: TSpeedButton;
stPolling: TStaticText;
ePollingMins: TEdit;
Label13: TLabel;
stPurging: TStaticText;
ePurgingDays: TEdit;
Label12: TLabel;
tsWorkflow: TTabSheet;
cbWorkflow: TGroupBox;
stOutboundQueue: TStaticText;
bWorkflowWizard: TBitBtn;
StaticText3: TStaticText;
udFolderPriority: TUpDown;
eFolderPriority: TEdit;
stOutboundProcess: TStaticText;
stInboundProcess: TStaticText;
stInboundQueue: TStaticText;
cbInboundProcess: TComboBox;
cbInboundQueue: TComboBox;
cbOutboundProcess: TComboBox;
cbOutboundQueue: TComboBox;
bWorkflowRefresh: TBitBtn;
bTestWorkflow: TBitBtn;
GroupBox1: TGroupBox;
edCw: TEdit;
eCw: TSpeedButton;
bCancel: TBitBtn;
bOK: TBitBtn;
stDbname: TStaticText;
eDBDBName: TEdit;
edCK: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
edGz: TEdit;
edRs: TEdit;
edDo: TEdit;
OpenDialog1: TOpenDialog;
eCK: TSpeedButton;
eGZ: TSpeedButton;
eRS: TSpeedButton;
eDo: TSpeedButton;
Label1: TLabel;
SpeedButton1: TSpeedButton;
edJD: TEdit;
eJd: TSpeedButton;
l1: TLabel;
edTz: TEdit;
eTz: TSpeedButton;
Label7: TLabel;
Bevel1: TBevel;
cbHide: TCheckBox;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure sbDBServerClick(Sender: TObject);
procedure bOKClick(Sender: TObject);
procedure bCancelClick(Sender: TObject);
procedure eCwClick(Sender: TObject);
procedure bTestConClick(Sender: TObject);
private
OrigPrefs: TPrefs;
end;
//var
// dlgPreferences: TdlgPreferences;
implementation
{$R *.DFM}
//
// Open the settings file/registry
//
function OpenSettings(var section: String): TRegIniFile;
begin
Result:=TRegIniFile.Create('\Software\xwfd\Settings');
Result.RootKey:=HKEY_LOCAL_MACHINE;
section:='\Software\xwfd\Settings';
end;
//
// Returns TRUE if the settings have been initialised
//
function SettingsInitialised: Boolean;
var Ini:TRegIniFile;
sect:string;
begin
// Open settings
Ini:=OpenSettings(sect);
// If there is no login username then the settings cannot have
// been initialised yet
if ini.ReadString(sect, 'app_username', '')='' then
Result:=FALSE
else
Result:=TRUE;
// Done
ini.Free;
end;
//
// Save a new Fax Server password to the registry. The memory
// preferences (g_Prefs) is also updated with the new setting.
//
// NOTE: This is the password used by the Fax Server to login to
// the Server
//
// Args: new password (clear-text)
//
//
// Load settings into memory (g_Prefs variable)
//
procedure LoadSettings;
var Ini:TRegIniFile;
sect:string;
sCompname:string;
begin
sCompname:=getcompName;
DEF_DBSERVER:=sCompname;
// Open settings
Ini:=OpenSettings(sect);
// Read settings
g_Prefs.PREFS_DBSERVER:=ini.ReadString(sect,'dbserver',DEF_DBSERVER);
g_Prefs.PREFS_DBUSERNAME:=ini.ReadString(sect,'dbusername','');
g_Prefs.PREFS_DBPASSWORD:=ini.ReadString(sect,'dbpassword','');
g_Prefs.PREFS_DBDBName:=ini.ReadString(sect,'dbDBName','');
g_PrefS.PREFS_CW:=ini.ReadString(sect,'cw','');
g_Prefs.PREFS_CK:=ini.ReadString(sect,'ck','');
g_Prefs.PREFS_GZ:=ini.Readstring(sect,'gz','');
g_Prefs.PREFS_RS:=ini.readString(sect,'rs','');
g_Prefs.PREFS_DO:=ini.Readstring(sect,'do','');
g_Prefs.PREFS_JD:=ini.Readstring(sect,'jd','');
g_Prefs.PREFS_TZ:=ini.ReadString(sect,'tz','');
g_Prefs.PREFS_HIDE:=ini.ReadBool(sect,'hide',true);
// Done
ini.Free;
end;
//
// Save settings (contents of g_Prefs variable)
//
procedure SaveSettings;
var Ini:TRegIniFile;
sect:string;
begin
// Open settings
Ini:=OpenSettings(sect);
// Write settings
ini.WriteString(sect, 'dbserver',g_Prefs.PREFS_DBSERVER);
ini.WriteString(sect, 'dbusername',g_Prefs.PREFS_DBUSERNAME);
ini.WriteString(sect, 'dbpassword',g_Prefs.PREFS_DBPASSWORD);
ini.WriteString(sect, 'dbDBName',g_Prefs.PREFS_DBDBName);
ini.WriteString(sect, 'cw', g_Prefs.PREFS_CW);
ini.WriteString(sect, 'ck', g_Prefs.PREFS_CK);
ini.WriteString(sect, 'gz', g_Prefs.PREFS_GZ);
ini.WriteString(sect, 'rs', g_Prefs.PREFS_RS);
ini.WriteString(sect, 'do', g_Prefs.PREFS_DO);
ini.WriteString(sect, 'jd', g_Prefs.PREFS_JD);
ini.WriteString(sect, 'tz', g_Prefs.PREFS_TZ);
ini.WriteBool(sect,'hide',g_Prefs.PREFS_HIDE);
// Done
ini.Free;
end;
//
// Place preference settings into form
//
procedure TdlgPreferences.FormShow(Sender: TObject);
var sect: String;
Ini:TRegIniFile;
begin
// Initialise
Screen.Cursor:=crHourglass;
PageControl.ActivePage:=tsLog;
// Load values
eDBServer.Text:=g_Prefs.PREFS_DBSERVER;
eDBUsername.Text:=g_Prefs.PREFS_DBUSERNAME;
eDBPassword.Text:=g_Prefs.PREFS_DBPASSWORD;
eDBDBName.Text:=g_Prefs.PREFS_DBDBName;
edCw.Text:=g_Prefs.PREFS_CW;
edCK.Text:=g_Prefs.PREFS_CK;
edGz.Text:=g_Prefs.PREFS_GZ;
edRs.Text:=g_Prefs.PREFS_RS;
edDo.Text:=g_Prefs.PREFS_DO;
edJd.Text:=g_Prefs.PREFS_JD;
edTz.Text:=g_Prefs.PREFS_TZ;
cbHide.Checked:=g_Prefs.PREFS_HIDE;
Screen.Cursor:=crDefault;
// Check user can save to registry
Ini:=OpenSettings(sect);
try
ini.WriteString(sect, 'regcheck', 'OK');
ini.Free;
except
Ini.Free;
MessageDlg('你的操作系统不能存储这些数据,请换个用户名登陆这台机器', mtWarning, [mbCancel], 0);
end;
// Save the original settings so we can tell if something has changed
SaveSettings;
OrigPrefs:=g_Prefs;
end;
//
// Load preferences from the registry
//
procedure TdlgPreferences.FormCreate(Sender: TObject);
begin
LoadSettings;
end;
//
//
// Check filenames are not the same
// Choose wants to use a dialog box to select the Application Server
// and Fax Server
procedure TdlgPreferences.sbDBServerClick(Sender: TObject);
var caption, server: String;
begin
// Coming from a valid button?
if Sender=sbDBServer then begin
caption:='请选择一个数据库服务器';
Sender:=eDBserver;
end else Exit;
// Display dialog box
server:=ChooseComputer(self.Handle, caption);
if server='' then Exit;
// Update preferences
(Sender as TEdit).Text:=server;
(Sender as TEdit).Modified:=TRUE;
end;
// Preferences & settings
procedure SetPreferences;
var dlgPrefs: TdlgPreferences;
begin
// Display it
Forms.Application.CreateForm(TdlgPreferences, dlgPrefs);
try
try
dlgPrefs.ShowModal;
except
// Ignore
end;
finally
dlgPrefs.Free;
dlgPrefs:=nil;
end;
end;
// Update service status
procedure TdlgPreferences.bOKClick(Sender: TObject);
begin
if MessageDlg('退出前需要保存吗?', mtConfirmation, [mbYes, mbNo], 0)=mrNo then close
else begin
try
g_Prefs.PREFS_CW:=edCw.Text;
g_Prefs.PREFS_CK:=edCK.Text;
g_Prefs.PREFS_GZ:=edGz.Text;
g_Prefs.Prefs_RS:=edRs.Text;
g_Prefs.Prefs_Do:=edDo.Text;
g_Prefs.PREFS_JD:=edJd.Text;
g_Prefs.PREFS_TZ:=edTz.Text;
g_Prefs.PREFS_HIDE:=cbHide.Checked;
g_Prefs.PREFS_DBSERVER:=eDbServer.Text;
g_Prefs.PREFS_DBUSERNAME:=eDBUsername.Text;
g_Prefs.PREFS_DBPASSWORD:=eDBPassword.Text;
g_Prefs.PREFS_DBDBName:=eDBDBName.Text;
SaveSettings;
Close;
except
MessageDlg('不能保存信息,请检查你填入的值.',
mtWarning, [mbCancel], 0);
Exit;
end;
end;
end;
procedure TdlgPreferences.bCancelClick(Sender: TObject);
begin
Close;
end;
procedure TdlgPreferences.eCwClick(Sender: TObject);
var filename: String;
begin
if OpenDialog1.Execute then begin
if Sender=eCw then begin
Sender:=edCW;
end else if Sender=eCK then begin
Sender:=edCK;
end else if Sender=eGz then begin
Sender:=edGz;
end else if Sender=eRs then begin
Sender:=edRs;
end else if Sender=eDo then begin
Sender:=edDo;
end else if Sender=eJd then begin
Sender:=edJd;
end else if Sender=etz then begin
Sender:=edtz;
end else Exit;
filename:=Opendialog1.FileName;
(Sender as TEdit).Text:=filename;
end;
end;
function GetCompname:string;
var size:Cardinal;
name:Pchar;
begin
Size:=255;
Getmem(Name,size);
GetComputerName(Name,size);
Result:=String(Name);
FreeMem(Name);
end;
procedure TdlgPreferences.bTestConClick(Sender: TObject);
var ADO:TADOConnection;
begin
ADO:= TADOConnection.Create(self);
Try
ADO.LoginPrompt:=FALSE;
ADO.ConnectionString:='Provider=SQLOLEDB.1;'+
'Persist Security Info=False;'+
'Initial Catalog='+eDBDBName.Text+';'+
'Data Source='+eDBServer.Text;
ADO.Open(eDBUsername.Text,eDBPassword.Text);
ADO.Connected:=TRUE;
if not ADO.Connected then begin
Messagedlg('测试失败!',mtWarning,[mbCancel],0);
Exit;
end;
except
Messagedlg('测试失败!',mtWarning,[mbCancel],0);
ADO.free;
Exit;
end;
//ADO.Execute(SQLstmt,commandtype,ExecuteOptions);
Messagedlg('测试成功!',mtInformation,[mbCancel],0);
Ado.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -