usersettingsform.pas
来自「著名的SecureBlackBox控件完整源码」· PAS 代码 · 共 123 行
PAS
123 行
unit UserSettingsForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, DemoSettings;
type
TfrmUserSettings = class(TForm)
gbUserSettings: TGroupBox;
cbPassword: TCheckBox;
cbPublicKey: TCheckBox;
cbKeyboard: TCheckBox;
btnOK: TButton;
btnCancel: TButton;
editUsername: TEdit;
lUser: TLabel;
rbAny: TRadioButton;
rbAll: TRadioButton;
btnSetPassword: TButton;
btnSetPublicKey: TButton;
procedure btnOKClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure cbPasswordClick(Sender: TObject);
procedure cbPublicKeyClick(Sender: TObject);
procedure btnSetPasswordClick(Sender: TObject);
procedure btnSetPublicKeyClick(Sender: TObject);
procedure cbKeyboardClick(Sender: TObject);
procedure rbAnyClick(Sender: TObject);
procedure rbAllClick(Sender: TObject);
private
FUser: TSSHServerUser;
public
procedure Initialize(User: TSSHServerUser);
end;
var
frmUserSettings: TfrmUserSettings;
implementation
{$R *.DFM}
uses
SBSSHConstants, SetPasswordForm, SetPublicKeyForm;
procedure TfrmUserSettings.btnOKClick(Sender: TObject);
begin
ModalResult := mrOk;
end;
procedure TfrmUserSettings.btnCancelClick(Sender: TObject);
begin
ModalResult := mrCancel;
end;
procedure TfrmUserSettings.Initialize(User: TSSHServerUser);
begin
FUser := User;
editUsername.Text := User.Name;
cbPassword.Checked := User.AuthTypes and SSH_AUTH_TYPE_PASSWORD > 0;
cbPublicKey.Checked := User.AuthTypes and SSH_AUTH_TYPE_PUBLICKEY > 0;
cbKeyboard.Checked := User.AuthTypes and SSH_AUTH_TYPE_KEYBOARD > 0;
btnSetPassword.Enabled := cbPassword.Checked or cbKeyboard.Checked;
btnSetPublicKey.Enabled := cbPublicKey.Checked;
rbAny.Checked := not User.AuthAll;
rbAll.Checked := User.AuthAll;
end;
procedure TfrmUserSettings.cbPasswordClick(Sender: TObject);
begin
btnSetPassword.Enabled := cbPassword.Checked or cbKeyboard.Checked;
if cbPassword.Checked then
FUser.AuthTypes := FUser.AuthTypes or SSH_AUTH_TYPE_PASSWORD
else
FUser.AuthTypes := FUser.AuthTypes and not SSH_AUTH_TYPE_PASSWORD;
end;
procedure TfrmUserSettings.cbPublicKeyClick(Sender: TObject);
begin
btnSetPublicKey.Enabled := cbPublicKey.Checked;
if cbPublicKey.Checked then
FUser.AuthTypes := FUser.AuthTypes or SSH_AUTH_TYPE_PUBLICKEY
else
FUser.AuthTypes := FUser.AuthTypes and not SSH_AUTH_TYPE_PUBLICKEY;
end;
procedure TfrmUserSettings.cbKeyboardClick(Sender: TObject);
begin
btnSetPassword.Enabled := cbPassword.Checked or cbKeyboard.Checked;
if cbKeyboard.Checked then
FUser.AuthTypes := FUser.AuthTypes or SSH_AUTH_TYPE_KEYBOARD
else
FUser.AuthTypes := FUser.AuthTypes and not SSH_AUTH_TYPE_KEYBOARD;
end;
procedure TfrmUserSettings.btnSetPasswordClick(Sender: TObject);
begin
if frmSetPassword.ShowModal = mrOk then
FUser.SetPassword(frmSetPassword.editPassword.Text);
end;
procedure TfrmUserSettings.btnSetPublicKeyClick(Sender: TObject);
begin
frmSetPublicKey.memoPublicKey.Lines.Text := FUser.PublicKey;
if frmSetPublicKey.ShowModal = mrOk then
if not FUser.SetPublicKey(frmSetPublicKey.memoPublicKey.Text) then
MessageDlg('Invalid public key format', mtError, [mbOk], 0);
end;
procedure TfrmUserSettings.rbAnyClick(Sender: TObject);
begin
FUser.AuthAll := false;
end;
procedure TfrmUserSettings.rbAllClick(Sender: TObject);
begin
FUser.AuthAll := true;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?