authsettingsform.pas

来自「著名的SecureBlackBox控件完整源码」· PAS 代码 · 共 145 行

PAS
145
字号
unit AuthSettingsForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ComCtrls, DemoSettings, ImgList;

type
  TfrmAuthSettings = class(TForm)
    gbUsers: TGroupBox;
    lUsers: TLabel;
    lvUsers: TListView;
    btnAdd: TBitBtn;
    btnRemove: TBitBtn;
    btnEdit: TBitBtn;
    btnOK: TButton;
    imgUsers: TImageList;
    procedure btnOKClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btnRemoveClick(Sender: TObject);
    procedure btnEditClick(Sender: TObject);
    procedure lvUsersSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
  private
    procedure Initialize;
    procedure OutputUserInfo(Item: TListItem; User : TSSHServerUser);
  public
    { Public declarations }
  end;

var
  frmAuthSettings: TfrmAuthSettings;

implementation

{$R *.DFM}

uses
  SBSSHConstants, UserSettingsForm;

procedure TfrmAuthSettings.Initialize;
var
  I : integer;
  Item: TListItem;
begin
  lvUsers.Items.Clear;
  for I := 0 to Settings.UserCount - 1 do
  begin
    Item := lvUsers.Items.Add;
    Item.ImageIndex := 0;
    OutputUserInfo(Item, Settings.Users[I]);
  end;
end;

procedure TfrmAuthSettings.OutputUserInfo(Item: TListItem; User : TSSHServerUser);
var
  S : string;
begin
  Item.Caption := User.Name;
  S := '';
  if User.AuthTypes and SSH_AUTH_TYPE_PASSWORD > 0 then
    S := S + 'password, ';
  if User.AuthTypes and SSH_AUTH_TYPE_PUBLICKEY > 0 then
    S := S + 'public-key, ';
  if User.AuthTypes and SSH_AUTH_TYPE_KEYBOARD > 0 then
    S := S + 'keyboard-interactive, ';
  if S <> '' then
  begin
    if User.AuthAll then
      S := Copy(S, 1, Length(S) - 2) + ' (all)'
    else
      S := Copy(S, 1, Length(S) - 2) + ' (any)';
  end;
  Item.SubItems.Clear;
  Item.SubItems.Add(S);
  Item.Data := User;
end;

procedure TfrmAuthSettings.btnOKClick(Sender: TObject);
begin
  ModalResult := mrOk;
end;

procedure TfrmAuthSettings.btnCancelClick(Sender: TObject);
begin
  ModalResult := mrCancel;
end;


procedure TfrmAuthSettings.btnAddClick(Sender: TObject);
var
  NewUser: string;
  I: integer;
  Item: TListItem;
begin
  NewUser := InputBox('New user', 'Please enter the Username for new user:', '');
  if NewUser <> '' then
  begin
    I := Settings.AddUser;
    Settings.Users[I].Name := NewUser;
    Item := lvUsers.Items.Add;
    Item.Caption := Settings.Users[I].Name;
    Item.Data := Settings.Users[I];
  end;
end;

procedure TfrmAuthSettings.FormShow(Sender: TObject);
begin
  Initialize;
end;

procedure TfrmAuthSettings.btnRemoveClick(Sender: TObject);
begin
  if (lvUsers.Selected <> nil) and (lvUsers.Selected.Data <> nil) then
  begin
    Settings.RemoveUser(TSSHServerUser(lvUsers.Selected.Data));
    lvUsers.Items.Delete(lvUsers.Selected.Index);
  end;
end;

procedure TfrmAuthSettings.btnEditClick(Sender: TObject);
begin
  if (lvUsers.Selected <> nil) and (lvUsers.Selected.Data <> nil) then
  begin
    frmUserSettings.Initialize(TSSHServerUser(lvUsers.Selected.Data));
    if frmUserSettings.ShowModal = mrOk then
    begin
      Settings.Save;
    end;
    OutputUserInfo(lvUsers.Selected, TSSHServerUser(lvUsers.Selected.Data));
  end;
end;

procedure TfrmAuthSettings.lvUsersSelectItem(Sender: TObject;
  Item: TListItem; Selected: Boolean);
begin
  btnRemove.Enabled := (Item <> nil) and (Item.Data <> nil) and Selected;
  btnEdit.Enabled := btnRemove.Enabled; 
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?