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

📄 ufmtmemo.pas

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

interface

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

type
  TfFmtMemo = class(TForm)
    Panel2: TPanel;
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    Panel4: TPanel;
    Panel3: TPanel;
    btLoad: TButton;
    btSave: TButton;
    odFmtMemo: TOpenDialog;
    sdFmtMemo: TSaveDialog;
    RichEditField: TDBRichEdit;
    btCancel: TButton;
    btOk: TButton;
    lSize: TLabel;
    Label1: TLabel;
    procedure FormShow(Sender: TObject);
    procedure btLoadClick(Sender: TObject);
    procedure btSaveClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btOkClick(Sender: TObject);
    procedure btCancelClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    CurrentTable: TABSDataSet;
    CurrentGrid: TDBGrid;
  end;

var
  fFmtMemo: TfFmtMemo;

implementation

{$R *.DFM}

procedure TfFmtMemo.FormShow(Sender: TObject);
var
  BlobStream: TStream;
begin
  CurrentTable := TABSDataset(CurrentGrid.DataSource.DataSet);
  if (not TABSTable(CurrentTable).ReadOnly) then
    CurrentTable.Edit;
  with RichEditField 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('Formatted Memo Field "%s"',[CurrentGrid.SelectedField.FieldName]);
end;

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

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

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

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

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

end.

⌨️ 快捷键说明

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