📄 option_frm.pas
字号:
unit Option_FRM;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, JvExControls, JvComponent, JvPageList, ComCtrls, JvExComCtrls,
JvPageListTreeView, JvGradientHeaderPanel, StdCtrls, JvExStdCtrls,
JvHtControls,CommCtrl, ImgList, Menus, ExtCtrls, Mask, JvGroupHeader;
type
TfmOption = class(TForm)
PageTree: TJvPageListTreeView;
JvPageList1: TJvPageList;
PageGeneral: TJvStandardPage;
PageConnection: TJvStandardPage;
PageBrowser: TJvStandardPage;
PageOther: TJvStandardPage;
lngBox: TJvHTComboBox;
lbLanguage: TLabel;
lbNeedRestart: TLabel;
ImgLstOther: TImageList;
ImgLstPList: TImageList;
CmbPopupsMode: TComboBox;
LbPopupsMode: TLabel;
cbUseDefaultUserAgent: TCheckBox;
cboUserAgent: TComboBox;
LbHost: TLabel;
LbUserName: TLabel;
Proxyhost: TEdit;
Proxyusername: TEdit;
LbPort: TLabel;
Proxyport: TEdit;
RBProxy1: TRadioButton;
GBProxy: TGroupBox;
RBProxy2: TRadioButton;
RBProxy3: TRadioButton;
LbPassword: TLabel;
ProxyPassword: TEdit;
LbByPass: TLabel;
ProxyByPass: TEdit;
BtnOK: TButton;
BtnCancel: TButton;
Header: TJvGradientHeaderPanel;
PageFeed: TJvStandardPage;
CBUpdateAtStart: TCheckBox;
EdtRefreshInterval: TEdit;
UpDown1: TUpDown;
LbDefaultRefresh: TLabel;
CheckBoxEnableScript: TCheckBox;
HeaderStartup: TJvGroupHeader;
HeaderRequire: TJvGroupHeader;
CBRunOnStart: TCheckBox;
CBMinToTray: TCheckBox;
CBNewVersion: TCheckBox;
CBDel: TCheckBox;
CBExit: TCheckBox;
CBShowDesktopAlert: TCheckBox;
LBMin: TLabel;
CBRefreshAtStart: TCheckBox;
procedure PageTreeChange(Sender: TObject; Node: TTreeNode);
procedure BtnCancelClick(Sender: TObject);
procedure BtnOKClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure OtherTreeEditing(Sender: TObject; Node: TTreeNode;
var AllowEdit: Boolean);
procedure cbUseDefaultUserAgentClick(Sender: TObject);
procedure CheckProxyEditEnabled;
procedure RBProxy1Click(Sender: TObject);
procedure RBProxy2Click(Sender: TObject);
procedure RBProxy3Click(Sender: TObject);
procedure ProxyportKeyPress(Sender: TObject; var Key: Char);
procedure CBUpdateAtStartClick(Sender: TObject);
private
{ Private declarations }
public
procedure TranslateFormOption;
procedure ShowPage(Index:integer);
{ Public declarations }
end;
var
fmOption: TfmOption;
implementation
uses Comm,uMain,MProperties,XFunctions,Registry;
{$R *.dfm}
Type
TAppOption = Record
ID: Integer; //节点编号
ImageIndex:Integer; //节点的图标序号
LngID: integer; //节点文字的语言文件索引号
End;
procedure TfmOption.TranslateFormOption;
begin
Self.Caption :=TranslateStr('Option',3000);
BtnOk.Caption :=TranslateStr('Option',3001);
BtnCancel.Caption :=TranslateStr('Option',3002);
lbNeedRestart.Caption :=TranslateStr('Option',3003);
PageTree.Items.Item[0].Text:=TranslateStr('Option',3004);
PageTree.Items.Item[1].Text:=TranslateStr('Option',3006);
PageTree.Items.Item[2].Text:=TranslateStr('Option',3015);
PageTree.Items.Item[3].Text:=TranslateStr('Option',3030);
PageTree.Items.Item[4].Text:=TranslateStr('Option',3021);
lbLanguage.Caption :=TranslateStr('Option',3005);
LbPopupsMode.Caption :=TranslateStr('Option',3016);
cbUseDefaultUserAgent.Caption:=TranslateStr('Option',3022);
GBProxy.Caption:=TranslateStr('Option',3007);
RBProxy1.Caption:=TranslateStr('Option',3008);
RBProxy2.Caption:=TranslateStr('Option',3009);
RBProxy3.Caption:=TranslateStr('Option',3010);
LbHost.Caption:=TranslateStr('Option',3011);
LbPort.Caption:=TranslateStr('Option',3012);
LbUserName.Caption:=TranslateStr('Option',3013);
LbPassword.Caption:=TranslateStr('Option',3014);
HeaderStartup.Caption := TranslateStr('Option',3023);
CBRunOnStart.Caption := TranslateStr('Option',3024);
CBMinToTray.Caption := TranslateStr('Option',3025);
CBNewVersion.Caption := TranslateStr('Option',3026);
HeaderRequire.Caption := TranslateStr('Option',3027);
CBDel.Caption := TranslateStr('Option',3028);
CBExit.Caption := TranslateStr('Option',3029);
//Channel
CBUpdateAtStart.Caption := TranslateStr('Option',3031);
LbDefaultRefresh.Caption := TranslateStr('Option',3032);
LBMin.Caption := TranslateStr('Option',3033);
CBShowDesktopAlert.Caption := TranslateStr('Option',3034);
CBRefreshAtStart.Caption := TranslateStr('Option',3035);
end;
procedure TfmOption.ShowPage(Index:integer);
begin
PageTree.Select(PageTree.Items.Item[Index],[]);
Self.ShowModal;
end;
procedure TfmOption.PageTreeChange(Sender: TObject;
Node: TTreeNode);
begin
Header.LabelCaption:=PageTree.Selected.Text;
end;
procedure TfmOption.BtnCancelClick(Sender: TObject);
begin
Self.Close;
end;
procedure TFMOption.CheckProxyEditEnabled;
begin
proxyhost.Enabled:=RBProxy3.Checked;
proxyport.Enabled:=RBProxy3.Checked;
proxyusername.Enabled:=RBProxy3.Checked;
ProxyPassword.Enabled:=RBProxy3.Checked;
end;
procedure TfmOption.FormCreate(Sender: TObject);
var
i,Idx:Integer;
ParentNode: TTreeNode;
Node: TTreeNode;
begin
TranslateFormOption;
//feed
CBUpdateAtStart.Checked := gProperties.RefreshAfterAdded;
UpDown1.Position:=gProperties.DefauleRefreshInterval;
CBShowDesktopAlert.Checked := gProperties.ShowDesktopAlter;
//General
lngBox.Clear;
if gProperties.Language.Count>0 then
begin
for i:= 0 to gProperties.Language.Count - 1 do // Iterate
begin
lngBox.Items.Add(gProperties.Language.Item[i].Name);
end; // for
lngBox.ItemIndex:=lngBox.Items.IndexOf(gProperties.CurrentLanguage);
end;
CBRefreshAtStart.Checked := gProperties.RefreshAtStart;
//Connection
proxyhost.Text:=gProperties.ProxyServer;
proxyport.Text:=IntToStr(gProperties.ProxyPort);
proxyusername.Text:=gProperties.ProxyUsername;
ProxyPassword.Text:=gProperties.ProxyPassword;
ProxyByPass.Text:=gProperties.ProxyByPass;
Case gProperties.ProxyMode Of
PM_Auto: RBProxy1.Checked:=true;
PM_Never: RBProxy2.Checked:=true;
PM_Custom:
begin
RBProxy3.Checked:=true;
CheckProxyEditEnabled;
end;
Else
RBProxy1.Checked:=true;
End;
//Browser
CMBPopupsMode.Items.Clear;
CmbPopupsMode.Items.Add(TranslateStr('Option',3017));
CmbPopupsMode.Items.Add(TranslateStr('Option',3018));
CmbPopupsMode.Items.Add(TranslateStr('Option',3019));
CheckBoxEnableScript.Caption := TranslateStr('Option',3020);
CheckBoxEnableScript.Checked := gProperties.EnableScript;
Case gProperties.ShowPopupsMode Of
POP_Always: CmbPopupsMode.ItemIndex := 0;
POP_Never: CmbPopupsMode.ItemIndex := 1;
POP_Ask: CmbPopupsMode.ItemIndex := 2;
Else
CmbPopupsMode.ItemIndex := 2;
End;
//Other
Idx := 0;
cboUserAgent.Items.Clear;
For i := Low(gUserAgents) To High(gUserAgents) Do Begin
cboUserAgent.Items.Add( gUserAgents[i] );
If 0 = CompareText( gUserAgents[i], gProperties.UserAgent ) Then
Idx := i;
End;
cboUserAgent.ItemIndex := Idx;
cbUseDefaultUserAgent.Checked := gProperties.ChangeUserAgent;
cboUserAgent.Enabled := cbUseDefaultUserAgent.Checked;
CBRunOnStart.Checked :=gProperties.RunAtStartup;
CBMinToTray.Checked := gProperties.StartHidden;
CBNewVersion.Checked := gProperties.CheckMsgsOnStartup;
CBDel.Checked := gProperties.RequireDelFeed;
CBExit.Checked := gProperties.RequireExit;
//=============================================================
end;
procedure TfmOption.BtnOKClick(Sender: TObject);
var
i,ID:Integer;
begin
//Other
gProperties.ChangeUserAgent := cbUseDefaultUserAgent.Checked;
if gProperties.ChangeUserAgent then
gProperties.UserAgent := cboUserAgent.Items[ cboUserAgent.ItemIndex ]
else
gProperties.UserAgent := ReadIEUserAgent;
gProperties.RunAtStartup := CBRunOnStart.Checked;
gProperties.StartHidden := CBMinToTray.Checked;
gProperties.CheckMsgsOnStartup := CBNewVersion.Checked;
gProperties.RequireDelFeed := CBDel.Checked;
gProperties.RequireExit := CBExit.Checked;
with TRegistry.Create do
begin
RootKey := HKEY_LOCAL_MACHINE;
if CBRunOnStart.Checked then
begin
try
if OpenKey('Software\Microsoft\Windows\CurrentVersion\run', false) then
WriteString('RssNavigator',Application.ExeName);//
finally
CloseKey;
free;
end;
end
else
begin
try
if OpenKey('Software\Microsoft\Windows\CurrentVersion\run', false) then
DeleteValue('RssNavigator');
finally
CloseKey;
free;
end;
end;
end; // with
//Browser
gProperties.EnableScript := CheckBoxEnableScript.Checked;
Case CmbPopupsMode.ItemIndex Of
0: gProperties.ShowPopupsMode := POP_Always;
1: gProperties.ShowPopupsMode := POP_Never;
2: gProperties.ShowPopupsMode := POP_Ask;
Else
gProperties.ShowPopupsMode := POP_Ask;
End;
//Connection
if RBProxy1.Checked then
gProperties.ProxyMode:=PM_Auto
else
if RBProxy2.Checked then
gProperties.ProxyMode:=PM_Never
else
gProperties.ProxyMode:=PM_Custom;
gProperties.ProxyServer := proxyhost.Text;
gProperties.ProxyPort := StrToInt(proxyport.Text);
gProperties.ProxyUsername := proxyusername.Text;
gProperties.ProxyPassword := ProxyPassword.Text;
gProperties.ProxyByPass:=ProxyByPass.Text;
//General
if gProperties.Language.Count>0 then
gProperties.CurrentLanguage:=lngBox.Text;
gProperties.RefreshAtStart := CBRefreshAtStart.Checked;
//feed
gProperties.RefreshAfterAdded:=CBUpdateAtStart.Checked;
gProperties.DefauleRefreshInterval:=StrToInt(EdtRefreshInterval.Text);
gProperties.ShowDesktopAlter := CBShowDesktopAlert.Checked;
MainWindow.TranslateFormMain;
Self.Close;
end;
procedure TfmOption.OtherTreeEditing(Sender: TObject; Node: TTreeNode;
var AllowEdit: Boolean);
begin
AllowEdit:=False;
end;
procedure TfmOption.cbUseDefaultUserAgentClick(Sender: TObject);
begin
cboUserAgent.Enabled:=cbUseDefaultUserAgent.Checked;
end;
procedure TfmOption.RBProxy1Click(Sender: TObject);
begin
gProperties.ProxyMode:=PM_Auto;
CheckProxyEditEnabled;
end;
procedure TfmOption.RBProxy2Click(Sender: TObject);
begin
gProperties.ProxyMode:=PM_Never;
CheckProxyEditEnabled;
end;
procedure TfmOption.RBProxy3Click(Sender: TObject);
begin
gProperties.ProxyMode:=PM_Custom;
CheckProxyEditEnabled;
end;
procedure TfmOption.ProxyportKeyPress(Sender: TObject; var Key: Char);
begin
if not(key in['0'..'9',#8])then
begin
key:=#0;
MessageBeep(1);
end;
end;
procedure TfmOption.CBUpdateAtStartClick(Sender: TObject);
begin
UpDown1.Enabled := CBUpdateAtStart.Checked;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -