亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? options.pas

?? VC++實現的時間同步程序
?? PAS
字號:
{ ************************************************************************

   NetTime is copyrighted by Graham Mainwaring. Permission is hereby
   granted to use, modify, redistribute and create derivative works
   provided this attribution is not removed. I also request that if you
   make any useful changes, please e-mail the diffs to graham@mhn.org
   so that I can include them in an 'official' release.

  ************************************************************************ }

unit Options;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, configobj, NetTimeCommon;

type

  TfrmOptions = class;

  TfrmOptions = class(TForm)
    Label1: TLabel;
    edHostname: TEdit;
    Label2: TLabel;
    edTimeFreq: TEdit;
    Label3: TLabel;
    edLostSync: TEdit;
    Label4: TLabel;
    edWarnAdj: TEdit;
    btnFindServer: TButton;
    Label5: TLabel;
    edRetry: TEdit;
    cbxProtocol: TComboBox;
    CbxNeverWarn: TCheckBox;
    btnOK: TButton;
    btnCancel: TButton;
    cbxServer: TCheckBox;
    Label7: TLabel;
    edPort: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    edHostname1: TEdit;
    btnFindServer1: TButton;
    cbxProtocol1: TComboBox;
    edPort1: TEdit;
    edHostname2: TEdit;
    btnFindServer2: TButton;
    cbxProtocol2: TComboBox;
    edPort2: TEdit;
    edHostname3: TEdit;
    btnFindServer3: TButton;
    cbxProtocol3: TComboBox;
    edPort3: TEdit;
    edHostname4: TEdit;
    btnFindServer4: TButton;
    cbxProtocol4: TComboBox;
    edPort4: TEdit;
    btnHelp: TButton;
    btnAutoConfig: TButton;
    cbxShowInTray: TCheckBox;
    cbxServiceAutoStart: TCheckBox;
    procedure FormShow(Sender: TObject);
    procedure btnFindServerClick(Sender: TObject);
    procedure CbxNeverWarnClick(Sender: TObject);
    procedure btnOKClick(Sender: TObject);
    procedure btnHelpClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure cbxProtocolChange(Sender: TObject);
    procedure btnAutoConfigClick(Sender: TObject);
  private
    co: TConfigObj;
    Hostnames: array[0..MaxServers-1] of TEdit;
    Protocols: array[0..MaxServers-1] of TComboBox;
    Ports: array[0..MaxServers-1] of TEdit;
    FindButtons: array[0..MaxServers-1] of TButton;
  public
    tt: TNetTimeServerBase;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure ReadFromRegistry;
    procedure ReadFromRunning(tt: TNetTimeServerBase);
    procedure ReadFromObject;
    procedure WriteToRegistry;
    procedure WriteToRunning(tt: TNetTimeServerBase);
    procedure WriteToObject;
  end;

implementation

{$R *.DFM}

uses registry, findhost, timewrap, autoconfig;

constructor TfrmOptions.Create(AOwner: TComponent);
begin
  inherited;
  co := TConfigObj.Create;
  ReadFromObject;
end;

destructor TfrmOptions.Destroy;
begin
  co.Free;
  inherited;
end;

procedure TfrmOptions.FormShow(Sender: TObject);
begin
  if Assigned(tt) then
    ReadFromRunning(tt);
end;

procedure TfrmOptions.btnFindServerClick(Sender: TObject);

var
  fFH: TfrmFindServer;
  s: string;
  p: integer;
  i: integer;
  n: integer;

begin
  n := -1;
  for i := 0 to MaxServers-1 do
    if Sender = FindButtons[i] then
      n := i;
  if n = -1 then
    exit;
  fFH := TfrmFindServer.Create(nil);
  if fFH.ShowModal = mrOK then
    begin
      if (fFH.lstSuccess.ItemIndex >= 0) then
        begin
          s := fFH.lstSuccess.Items[fFH.lstSuccess.ItemIndex];
          p := pos(' ',s);
          if p > 0 then
            s := copy(s,1,p-1);
          Hostnames[n].Text := s;
          Protocols[n].ItemIndex := 0;
          Ports[n].Text := inttostr(NTP_Port);
        end;
    end;
  fFH.Release;
end;

procedure TfrmOptions.ReadFromRegistry;
begin
  co.ReadFromRegistry;
  ReadFromObject;
end;

procedure TfrmOptions.ReadFromRunning(tt: TNetTimeServerBase);
begin
  co.ReadFromRegistry;
  co.ReadFromRunning(tt);
  ReadFromObject;
end;

procedure TfrmOptions.ReadFromObject;

var
  i: integer;

  procedure ReadServer(const n: integer);
  begin
    Hostnames[n].Text := co.Servers[n].Hostname;
    Protocols[n].ItemIndex := integer(co.Servers[n].Protocol);
    Ports[n].Text := inttostr(co.Servers[n].Port);
  end;

begin
  for i := 0 to co.ServerCount-1 do
    ReadServer(i);
  edTimeFreq.Text := inttostr(co.SyncFreq);
  edLostSync.Text := inttostr(co.LostSync);
  edWarnAdj.Text := inttostr(co.WarnAdj);
  cbxNeverWarn.Checked := (edWarnAdj.Text = '0');
  edWarnAdj.Enabled := not cbxNeverWarn.Checked;
  edRetry.Text := inttostr(co.Retry);
  cbxServer.Checked := co.Server;
  cbxShowInTray.Checked := co.LoadOnLogin;
  cbxServiceAutoStart.Checked := co.ServiceOnBoot;
end;

procedure TfrmOptions.WriteToRegistry;
begin
  WriteToObject;
  co.WriteToRegistry;
end;

procedure TfrmOptions.WriteToRunning(tt: TNetTimeServerBase);
begin
  WriteToObject;
  co.WriteToRunning(tt);
end;

procedure TfrmOptions.WriteToObject;

var
  i: integer;

  procedure WriteServer(const n: integer);

  var
    Srv: TServerDef;

  begin
    if Hostnames[n].Text = '' then
      exit;
    Srv.Hostname := Hostnames[n].Text;
    Srv.Protocol := TTimeProto(Protocols[n].ItemIndex);
    Srv.Port := strtoint(Ports[n].Text);
    co.AddServer(Srv);
  end;

begin
  co.ClearServerList;
  for i := 0 to MaxServers-1 do
    WriteServer(i);
  co.SyncFreq := strtoint(edTimeFreq.Text);
  co.LostSync := strtoint(edLostSync.Text);
  co.WarnAdj := strtoint(edWarnAdj.Text);
  co.Retry := strtoint(edRetry.Text);
  co.Server := cbxServer.Checked;
  co.LoadOnLogin := cbxShowInTray.Checked;
  co.ServiceOnBoot := cbxServiceAutoStart.Checked;
end;

procedure TfrmOptions.CbxNeverWarnClick(Sender: TObject);
begin
  if CbxNeverWarn.Checked then
    begin
      EdWarnAdj.Text := '0';
      EdWarnAdj.Enabled := false;
    end
  else
    begin
      if EdWarnAdj.Text = '0' then
        EdWarnAdj.Text := inttostr(DefaultRetry);
      EdWarnAdj.Enabled := true;
    end;
end;

procedure TfrmOptions.btnOKClick(Sender: TObject);

var
  Problems: string;

begin
  WriteToObject;
  Problems := '';
  if (co.SyncFreq < 600) or (co.Retry < 600) then
    Problems := Problems + '* Update intervals lower than ten minutes are strongly '+
      'discouraged when synchronizing to public servers, in order to avoid excessive '+
      'bandwidth costs for the server operators.' + #13#10 + #13#10;
  if co.Retry < co.SyncFreq then
    Problems := Problems + '* The retry interval is the time to wait when a server is '+
      'down. This should be higher than the normal sync interval, to avoid '+
      'creating heavy traffic to a server that can''t handle it.' + #13#10 + #13#10;
  if co.LostSync < (co.SyncFreq + (co.Retry * 2)) then
    Problems := Problems + '* The Max Free Run interval is the maximum amount of time '+
      'that can elapse before we consider the local clock to be out of sync. It is '+
      'recommended that this be long enough to allow at least two retries.' + #13#10 + #13#10;
  if Problems <> '' then
    if MessageDlg('The following problems were found with your configuration:' + #13#10 + #13#10 +
      Problems + 'Do you want to correct these problems automatically?',
      mtWarning, [mbYes,mbNo], 0) = mrYes then
      begin
        if co.SyncFreq < 600 then
          co.SyncFreq := 600;
        if co.Retry < 600 then
          co.Retry := 600;
        if co.Retry < co.SyncFreq then
          co.Retry := co.SyncFreq;
        if co.LostSync < (co.SyncFreq + (co.Retry * 2)) then
          co.LostSync := (co.SyncFreq + (co.Retry * 2));
        ReadFromObject;
      end;
  WriteToRegistry;
  if Assigned(tt) then
    WriteToRunning(tt);
end;

procedure TfrmOptions.btnHelpClick(Sender: TObject);
begin
  Application.HelpCommand(HELP_CONTEXT,Self.HelpContext);
end;

procedure TfrmOptions.FormCreate(Sender: TObject);
begin
  Hostnames[0] := edHostname;
  Hostnames[1] := edHostname1;
  Hostnames[2] := edHostname2;
  Hostnames[3] := edHostname3;
  Hostnames[4] := edHostname4;
  Protocols[0] := cbxProtocol;
  Protocols[1] := cbxProtocol1;
  Protocols[2] := cbxProtocol2;
  Protocols[3] := cbxProtocol3;
  Protocols[4] := cbxProtocol4;
  Ports[0] := edPort;
  Ports[1] := edPort1;
  Ports[2] := edPort2;
  Ports[3] := edPort3;
  Ports[4] := edPort4;
  FindButtons[0] := btnFindServer;
  FindButtons[1] := btnFindServer1;
  FindButtons[2] := btnFindServer2;
  FindButtons[3] := btnFindServer3;
  FindButtons[4] := btnFindServer4;
end;

procedure TfrmOptions.cbxProtocolChange(Sender: TObject);

var
  i: integer;

begin
  for i := 0 to MaxServers-1 do
    if Sender = Protocols[i] then
      Ports[i].Text := inttostr(
        DefaultPortForProtocol(TTimeProto(Protocols[i].ItemIndex)));
end;

procedure TfrmOptions.btnAutoConfigClick(Sender: TObject);

var
  fAC: TfrmAutoConfigure;

  function UpToComma(const s: string): string;

  var
    p: integer;

  begin
    p := pos(',',s);
    if p = 0 then
      result := s
    else
      result := copy(s,1,p-1);
  end;

  procedure SetItUp(const idx: integer; const hn: string);
  begin
    if hn <> '' then
      begin
        Hostnames[idx].Text := hn;
        Protocols[idx].ItemIndex := 0;
        Ports[idx].Text := inttostr(NTP_Port);
      end
    else
      begin
        Hostnames[idx].Text := '';
        Protocols[idx].ItemIndex := -1;
        Ports[idx].Text := '';
      end;
  end;

begin
  fAC := TfrmAutoConfigure.Create(Application);
  try
    if fAC.ShowModal = mrOK then
      begin
        SetItUp(0,UpToComma(fAC.lblServer1.Caption));
        SetItUp(1,UpToComma(fAC.lblServer2.Caption));
        SetItUp(2,UpToComma(fAC.lblServer3.Caption));
        SetItUp(3,UpToComma(fAC.lblServer4.Caption));
        SetItUp(4,UpToComma(fAC.lblServer5.Caption));
      end;
  finally
    fAC.Free;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人自拍视频在线观看| 亚洲欧洲美洲综合色网| 国产精品538一区二区在线| 中文字幕一区二区视频| 91精品中文字幕一区二区三区| 蜜桃视频一区二区三区在线观看| 国产午夜精品一区二区三区四区| 在线一区二区三区做爰视频网站| 黄色精品一二区| 视频一区国产视频| 中文字幕在线观看不卡视频| 欧美电影影音先锋| 欧美日韩国产一级片| 99国产精品久久| 国产原创一区二区三区| 另类小说图片综合网| 日一区二区三区| 无吗不卡中文字幕| 亚洲黄色片在线观看| 国产精品久久久久久亚洲毛片| 日韩欧美国产一区二区在线播放| 欧美日韩在线直播| 欧美影视一区在线| 色综合久久久久综合99| 色哟哟在线观看一区二区三区| 成人福利视频在线| 91丨九色丨蝌蚪丨老版| 91美女片黄在线观看| 91麻豆精品在线观看| 色先锋资源久久综合| 91黄视频在线观看| 欧美一级淫片007| 久久精品日产第一区二区三区高清版| 久久这里只有精品首页| 国产欧美日韩综合| 中文字幕视频一区| 亚洲自拍欧美精品| 蜜臀av性久久久久av蜜臀妖精| 久久99精品网久久| zzijzzij亚洲日本少妇熟睡| 色综合久久天天综合网| 欧美丰满高潮xxxx喷水动漫| 精品国产三级电影在线观看| 亚洲国产激情av| 亚洲小说欧美激情另类| 日本中文在线一区| 成人一级黄色片| 欧美精品视频www在线观看| 欧美成人一区二区三区片免费| 中文字幕免费在线观看视频一区| 亚洲激情图片一区| 国内精品免费**视频| 91国产免费看| 国产精品私人影院| 免费在线观看视频一区| 97精品久久久午夜一区二区三区| 欧美日韩大陆一区二区| 中文字幕一区二区三区在线播放 | 成人丝袜高跟foot| 蜜臀av性久久久久蜜臀aⅴ | 国产精品久久久久婷婷二区次| 久久―日本道色综合久久 | 中文字幕av免费专区久久| 国产精品成人网| 岛国精品在线观看| 久久久一区二区| 国产69精品久久99不卡| 精品久久久影院| 国内精品伊人久久久久av影院| 宅男在线国产精品| 日av在线不卡| 精品免费一区二区三区| 国内精品视频666| 国产精品嫩草影院av蜜臀| 激情文学综合插| 日韩精品一区二区三区老鸭窝| 国产91高潮流白浆在线麻豆| 欧美巨大另类极品videosbest | 国产一区二区三区久久久| 9191成人精品久久| 日韩电影免费在线观看网站| 精品视频免费在线| 亚洲精品中文在线影院| av一区二区三区黑人| 亚洲三级电影全部在线观看高清| 91理论电影在线观看| 亚洲成在人线免费| 91精品国产高清一区二区三区 | 韩国一区二区在线观看| 久久久99精品免费观看不卡| 精品女同一区二区| 中文字幕免费观看一区| 欧美第一区第二区| 一本色道a无线码一区v| jlzzjlzz亚洲日本少妇| 欧美极品美女视频| 久久精品72免费观看| 亚洲成人免费在线| 成人精品小蝌蚪| 国产亚洲精品久| 中文字幕国产一区| 成人免费视频网站在线观看| 精品污污网站免费看| 色老汉一区二区三区| 91精品黄色片免费大全| 久久久久久久av麻豆果冻| 亚洲不卡av一区二区三区| 国产精品91一区二区| 国产乱子伦视频一区二区三区| 麻豆91精品91久久久的内涵| 国产精品成人午夜| 日韩视频一区在线观看| 亚洲一区av在线| 日本系列欧美系列| 亚洲成人动漫在线观看| 欧美国产1区2区| 欧美电影免费观看高清完整版在线 | 欧美日韩一区国产| 不卡一区二区三区四区| 国产.欧美.日韩| 另类欧美日韩国产在线| 蜜臀a∨国产成人精品| 免费成人在线观看视频| 欧洲生活片亚洲生活在线观看| 欧美一区二区三区四区高清| 一级做a爱片久久| 欧美成人video| 久久青草国产手机看片福利盒子| 日韩写真欧美这视频| 精品国产免费视频| 欧美激情在线一区二区| 亚洲日本va在线观看| 亚洲制服丝袜av| 日韩av电影天堂| 风间由美中文字幕在线看视频国产欧美 | 国产精品成人一区二区三区夜夜夜| 国产精品视频一二三区| 亚洲一区二区视频在线| 欧美aⅴ一区二区三区视频| 国内精品免费**视频| 99热这里都是精品| 欧美人动与zoxxxx乱| xnxx国产精品| 一区二区在线观看视频| 久久精品国产**网站演员| 国产91清纯白嫩初高中在线观看 | 日韩av中文在线观看| 一区二区三区电影在线播| 亚洲同性gay激情无套| 亚洲国产wwwccc36天堂| 久久国产精品99久久久久久老狼| av在线不卡网| 4438x亚洲最大成人网| 欧美日韩久久不卡| 51精品视频一区二区三区| 在线播放亚洲一区| 91精品国产综合久久小美女| 亚洲精品一区二区三区蜜桃下载| 亚洲欧洲日本在线| 蜜乳av一区二区| av在线不卡网| 欧美高清激情brazzers| 国产精品久久久久aaaa樱花| 性久久久久久久久| 成人av免费网站| 日韩欧美一级二级三级久久久| 中国色在线观看另类| 亚洲超碰97人人做人人爱| 丰满放荡岳乱妇91ww| 欧美日韩在线综合| 亚洲精品亚洲人成人网| 国产美女av一区二区三区| 欧美日韩免费一区二区三区视频 | 亚洲欧美在线高清| 国产久卡久卡久卡久卡视频精品| 欧美猛男超大videosgay| 中文天堂在线一区| 韩国女主播一区二区三区| 欧美精品一二三区| 天天影视色香欲综合网老头| 色噜噜夜夜夜综合网| 中文字幕在线观看不卡视频| 9久草视频在线视频精品| 国产日韩欧美精品在线| 国产福利一区二区三区在线视频| 精品国产亚洲在线| 久久精品国内一区二区三区| 欧美亚洲国产一卡| 五月婷婷综合网| 欧美日韩成人在线| 日本不卡一区二区三区| 久久综合九色欧美综合狠狠| 岛国av在线一区| 国产精品国产三级国产普通话蜜臀| 成人免费视频视频在线观看免费 | 综合av第一页| 欧美精品成人一区二区三区四区| 亚洲小说欧美激情另类| 这里只有精品免费| 成人高清免费观看|