clrdemoblobform.pas

来自「East make Tray Icon in delphi」· PAS 代码 · 共 72 行

PAS
72
字号
unit ClrDemoBlobForm;

interface

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

type
  TfrmBlobs = class(TForm)
    btnOK: TBitBtn;
    lstBlobs: TListView;
    memDump: TMemo;
    procedure lstBlobsSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure lstBlobsData(Sender: TObject; Item: TListItem);
  private
    FStream: TJclCLRBlobStream;
    procedure ShowBlobs(const AStream: TJclCLRBlobStream);
  public
    class procedure Execute(const AStream: TJclCLRBlobStream);
  end;

var
  frmBlobs: TfrmBlobs;

implementation

uses ClrDemoAbstractFrame;

{$R *.DFM}

{ TfrmBlobs }

class procedure TfrmBlobs.Execute(const AStream: TJclCLRBlobStream);
begin
  with TfrmBlobs.Create(nil) do
  try
    ShowBlobs(AStream);
    ShowModal;
  finally
    Free;
  end;
end;

procedure TfrmBlobs.ShowBlobs(const AStream: TJclCLRBlobStream);
begin
  FStream := AStream;
  lstBlobs.Items.Count := FStream.BlobCount;
end;

procedure TfrmBlobs.lstBlobsSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
  if Selected then
  with TJclCLRBlobRecord(Item.Data) do
    TfrmAbstract.DumpBuf(Memory, Size, memDump,
      FStream.Offset + DWORD(Memory) - DWORD(FStream.Data));
end;

procedure TfrmBlobs.lstBlobsData(Sender: TObject; Item: TListItem);
begin
  Item.Caption := IntToStr(Item.Index);
  Item.Data    := FStream.Blobs[Item.Index];

  Item.SubItems.Add('$' +
    IntToHex(FStream.Blobs[Item.Index].Offset, 8));
  Item.SubItems.Add(IntToStr(FStream.Blobs[Item.Index].Size));
end;

end.

⌨️ 快捷键说明

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