mainform.pas

来自「《Delphi COM深入编程》原书光盘」· PAS 代码 · 共 123 行

PAS
123
字号
unit MainForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, ExtCtrls,
{$IFDEF VER100}
  PropSets,  // For Delphi 3
{$ENDIF}
  PropertySet, ActiveX;

type
  TfrmMain = class(TForm)
    pnlBottom: TPanel;
    pnlClient: TPanel;
    Label1: TLabel;
    listProperties: TListView;
    btnClose: TButton;
    Label2: TLabel;
    Label3: TLabel;
    ecPropertyName: TEdit;
    ecValue: TEdit;
    btnDelete: TButton;
    btnSet: TButton;
    btnOpen: TButton;
    OpenDialog1: TOpenDialog;
    PropertySet1: TPropertySet;
    procedure btnOpenClick(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure btnSetClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
    procedure PropertySet1EnumProperties(Sender: TObject;
      PropertyName: String; PropertyID: Integer;
      PropertyVariant: tagPROPVARIANT);
    procedure listPropertiesClick(Sender: TObject);
  private
    procedure LoadPropertyList;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.DFM}

procedure TfrmMain.LoadPropertyList;
begin
  listProperties.Items.Clear;

  PropertySet1.Enumerate;
end;

procedure TfrmMain.btnOpenClick(Sender: TObject);
begin
  if OpenDialog1.Execute then begin
    PropertySet1.Close;

    PropertySet1.FileName := OpenDialog1.FileName;
    PropertySet1.StreamGUID := FMTID_UserDefinedProperties;
    PropertySet1.Open;

    listProperties.Enabled := True;
    ecPropertyName.Enabled := True;
    ecValue.Enabled := True;
    btnSet.Enabled := True;
    btnDelete.Enabled := True;

    LoadPropertyList;
  end;
end;

procedure TfrmMain.btnCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmMain.listPropertiesClick(Sender: TObject);
var
  LI: TListItem;
begin
  LI := listProperties.Selected;

  if LI <> nil then begin
    ecPropertyName.Text := LI.Caption;
    ecValue.Text := LI.SubItems[0];
  end;
end;

procedure TfrmMain.btnSetClick(Sender: TObject);
begin
  PropertySet1.SetProperty(ecPropertyName.Text, ecValue.Text);

  LoadPropertyList;
end;

procedure TfrmMain.btnDeleteClick(Sender: TObject);
begin
  PropertySet1.DeleteProperty(ecPropertyName.Text);

  LoadPropertyList;
end;

procedure TfrmMain.PropertySet1EnumProperties(Sender: TObject;
  PropertyName: String; PropertyID: Integer;
  PropertyVariant: tagPROPVARIANT);
var
  LI: TListItem;
begin
  if PropertyVariant.vt = VT_LPSTR then begin
    LI := listProperties.Items.Add;
    LI.Caption := PropertyName;
    LI.SubItems.Add(PropertyVariant.pszVal);
  end;
end;

end.

⌨️ 快捷键说明

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