⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ugraphic.pas

📁 AbsDataBase5.16 最新版
💻 PAS
字号:
unit uGraphic;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, DBCtrls, ComCtrls, ExtDlgs, Db, DBGrids, ABSMain;

type
  TfGraphic = class(TForm)
    Panel2: TPanel;
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    Panel4: TPanel;
    Panel3: TPanel;
    btLoad: TButton;
    btSave: TButton;
    ImageField: TDBImage;
    odGraphic: TOpenPictureDialog;
    sdGraphic: TSavePictureDialog;
    btCancel: TButton;
    btOk: TButton;
    lSize: TLabel;
    Label1: TLabel;
    procedure FormShow(Sender: TObject);
    procedure btLoadClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btSaveClick(Sender: TObject);
    procedure btOkClick(Sender: TObject);
    procedure btCancelClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    CurrentTable: TABSDataSet;
    CurrentGrid: TDBGrid;
  end;

var
  fGraphic: TfGraphic;

implementation

{$R *.DFM}

procedure TfGraphic.FormShow(Sender: TObject);
var
  BlobStream: TStream;
begin
  CurrentTable := TABSDataset(CurrentGrid.DataSource.DataSet);
  if (not TABSTable(CurrentTable).ReadOnly) then
    CurrentTable.Edit;
  with ImageField do
    begin
      DataSource := nil;
      DataField := CurrentGrid.SelectedField.FieldName;
      DataSource := CurrentGrid.DataSource;
    end;
  BlobStream := CurrentTable.CreateBlobStream(CurrentGrid.SelectedField,bmRead);
  lSize.Caption := Format('%d bytes', [BlobStream.Size]);
  BlobStream.Free;
  Caption := Format('Graphic Field "%s"',[CurrentGrid.SelectedField.FieldName]);
end;

procedure TfGraphic.btLoadClick(Sender: TObject);
var
  FileStream: TFileStream;
  BlobStream: TStream;
begin
 if (odGraphic.Execute) then
   begin
     ImageField.DataSource := nil;
     try
       BlobStream := CurrentTable.CreateBlobStream(CurrentGrid.SelectedField,bmWrite);
       FileStream := TFileStream.Create(odGraphic.FileName,fmOpenRead or fmShareDenyNone);
       BlobStream.CopyFrom(FileStream,FileStream.Size);
       lSize.Caption := Format('%d bytes', [BlobStream.Size]);
       FileStream.Free;
       BlobStream.Free;
     finally
       ImageField.DataSource := CurrentGrid.DataSource;
     end;
   end;
end;

procedure TfGraphic.btSaveClick(Sender: TObject);
var
  FileStream: TFileStream;
  BlobStream: TStream;
begin
  if (sdGraphic.Execute) then
    begin
      FileStream := TFileStream.Create(sdGraphic.FileName,fmCreate);
      BlobStream := CurrentTable.CreateBlobStream(CurrentGrid.SelectedField,bmRead);
      FileStream.CopyFrom(BlobStream,BlobStream.Size);
      BlobStream.Free;
      FileStream.Free;
    end;
end;

procedure TfGraphic.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ImageField.DataSource := nil;
  if (CurrentTable.State = dsEdit) then
    CurrentTable.Cancel;
end;

procedure TfGraphic.btOkClick(Sender: TObject);
begin
 if (not CurrentTable.ReadOnly) then
   CurrentTable.Post;
end;

procedure TfGraphic.btCancelClick(Sender: TObject);
begin
 if (not CurrentTable.ReadOnly) then
   CurrentTable.Cancel;
end;

end.

⌨️ 快捷键说明

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