Componentes.Terceros.jcl/official/1.96/examples/windows/clr/ClrDemoBlobForm.pas

72 lines
1.6 KiB
ObjectPascal

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.