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

📄 option_frm.pas

📁 自己写的一个 RSS 阅读器
💻 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 + -