referencesform.pas

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

PAS
138
字号
unit ReferencesForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls,
  ReferenceForm,
  SBUtils, SBXMLSec, SBXMLTransform;

type
  TfrmReferences = class(TForm)
    lbReferences: TListBox;
    btnClose: TButton;
    btnAdd: TButton;
    btnDelete: TButton;
    btnInfo: TButton;
    procedure btnInfoClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
  private
    FReferences: TElXMLReferenceList;
    FVerify: Boolean;
    procedure SetVerify(const Value: Boolean);

    procedure SetReferences(const Value: TElXMLReferenceList);

    procedure UpdateReferences;
  public
    property References: TElXMLReferenceList read FReferences write SetReferences;
    property Verify: Boolean read FVerify write SetVerify;
  end;

var
  frmReferences: TfrmReferences;

implementation

{$R *.dfm}

{ TfrmReferences }

procedure TfrmReferences.btnAddClick(Sender: TObject);
var
  Ref: TElXMLReference;
begin
  Ref := TElXMLReference.Create;
  frmReference.Reference := Ref;
  frmReference.Verify := Verify;
  if frmReference.ShowModal = mrOK then
  begin
    FReferences.Add(frmReference.Reference);
    UpdateReferences;
  end
  else
    FreeAndNil(Ref);
end;

procedure TfrmReferences.btnDeleteClick(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to lbReferences.Items.Count - 1 do
    if lbReferences.Selected[i] then
    begin
      FReferences.Delete(i);
      Break;
    end;

  UpdateReferences;
end;

procedure TfrmReferences.btnInfoClick(Sender: TObject);
var
  i: Integer;
  Found: Boolean;
begin
  Found := False;
  for i := 0 to lbReferences.Items.Count - 1 do
    if lbReferences.Selected[i] then
    begin
      Found := True;
      frmReference.Verify := Verify;
      frmReference.Reference := References.Reference[i];
      if frmReference.ShowModal = mrOK then
      begin
        frmReference.Reference;
      end;

      Break;
    end;

  if not Found and (lbReferences.Items.Count > 0) then
  begin
    frmReference.Verify := Verify;
    frmReference.Reference := References.Reference[0];
    if frmReference.ShowModal = mrOK then
      frmReference.Reference;
  end;

  UpdateReferences;
end;

procedure TfrmReferences.SetReferences(const Value: TElXMLReferenceList);
begin
  FReferences := Value;
  UpdateReferences;
end;

procedure TfrmReferences.SetVerify(const Value: Boolean);
begin
  FVerify := Value;
  btnAdd.Enabled := not FVerify;
  btnDelete.Enabled := not FVerify;
end;

procedure TfrmReferences.UpdateReferences;
var
  i: Integer;
  s: string;
begin
  lbReferences.Clear;
  for i := 0 to FReferences.Count - 1 do
  begin
    s := FReferences.Reference[i].ID;
    if s <> '' then
      s := s + ' - ';

    s := s + FReferences.Reference[i].URI;
    if s = '' then
      s := 'none';

    lbReferences.Items.AddObject(s, FReferences.Reference[i]);
  end;
end;

end.

⌨️ 快捷键说明

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