📄 book.pas
字号:
unit Book;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, Menus, Clipbrd, Jpeg,
DB, DBTables;
type
TfrmBook = class(TForm)
DBNavigator1: TDBNavigator;
Panel1: TPanel;
Button1: TButton;
Panel2: TPanel;
DBGrid1: TDBGrid;
Splitter1: TSplitter;
Panel3: TPanel;
Label1: TLabel;
edNameFilter: TEdit;
DBMemo1: TDBMemo;
Splitter2: TSplitter;
pmImage: TPopupMenu;
miCutImage: TMenuItem;
N5: TMenuItem;
Image1: TImage;
miLoadFromFile: TMenuItem;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure edNameFilterExit(Sender: TObject);
procedure miCopyImageClick(Sender: TObject);
procedure miPasteImageClick(Sender: TObject);
procedure miLoadFromFileClick(Sender: TObject);
procedure DBGrid1ColEnter(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure miCutImageClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmBook: TfrmBook;
implementation
uses DataM, DIMime;
{$R *.dfm}
procedure TfrmBook.Button1Click(Sender: TObject);
begin
DataModule1.cdsBook.ApplyUpdates(-1);
end;
procedure TfrmBook.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmBook.edNameFilterExit(Sender: TObject);
begin
if Length(edNameFilter.Text)>0 then
begin
DataModule1.cdsBook.Filter := 'BookName LIKE ''%'+edNameFilter.Text+'%''';
DataModule1.cdsBook.Filtered := True;
end
else
begin
DataModule1.cdsBook.Filtered := False;
DataModule1.cdsBook.Filter := '';
end;
Caption := IntToStr(DataModule1.cdsBook.RecordCount);
end;
procedure TfrmBook.miCopyImageClick(Sender: TObject);
begin
Image1.Assign(Clipboard);
end;
procedure TfrmBook.miPasteImageClick(Sender: TObject);
begin
Clipboard.Assign(Image1);
end;
procedure TfrmBook.miLoadFromFileClick(Sender: TObject);
var
jImage:TJpegImage;
ss: TStringStream;
begin
if DataModule1.cdsBook.RecNo<>-1 then
begin
if OpenDialog1.Execute then
begin
jImage := TJpegImage.Create;
jImage.LoadFromFile(OpenDialog1.FileName);
Image1.Picture.Assign(jImage);
with DataModule1 do
begin
cdsBook.Edit;
ss := TStringStream.Create('');;
jImage.SaveToStream(ss);
cdsBook.FieldByName('BookCover').AsString := MIMEEncodeString(ss.DataString);
cdsBook.Post;
cdsBook.ApplyUpdates(-1);
end;
jImage.Free;
end;
end;
end;
procedure TfrmBook.DBGrid1ColEnter(Sender: TObject);
begin
with DBGrid1 do
begin
if (SelectedField.FieldName = 'Abstract') or
(SelectedField.FieldName = 'Content') or
(SelectedField.FieldName = 'Memoir')
then
DBMemo1.DataField := SelectedField.FieldName;
end;
end;
procedure TfrmBook.Image1Click(Sender: TObject);
{var
b: TStream;
buf:array [0..255] of Char;
i:Integer;}
begin
{ with DataModule1 do
begin
b:= cdsBook.CreateBlobStream(cdsBook.FieldByName('BookCover'), bmRead);
jImage.SaveToStream(b);
for i:=0 to 255 do
buf[i] := Chr(i);
b.ReadBuffer(buf,256);
Caption := buf;
b.Free;
end;}
end;
procedure TfrmBook.DBGrid1CellClick(Column: TColumn);
var
jImage:TJpegImage;
ss: TStringStream;
bSize:Integer;
begin
bSize :=TBlobField(DataModule1.cdsBook.FieldByName('BookCover')).BlobSize;
if bSize>0 then
begin
jImage := TJpegImage.Create;
with DataModule1 do
begin
ss := TStringStream.Create(MIMEDecodeString(cdsBook.FieldByName('BookCover').AsString));
ss.Seek(0, soFromBeginning);
jImage.LoadFromStream(ss);
Image1.Picture.Assign(jImage);
ss.Free;
end;
jImage.Free;
end;
end;
procedure TfrmBook.miCutImageClick(Sender: TObject);
begin
with DataModule1.cdsBook do
begin
Edit;
FieldByName('BookCover').AsString := '';
Post;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -