【delphi开源代码栏目提醒】:网学会员delphi开源代码为您提供Equipment.pas参考,解决您在Equipment.pas学习中工作中的难题,参考学习。
unit Equipment;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, Buttons, ExtCtrls, DB, DBTables,jpeg,
ExtDlgs;
type
TEquipmentFrm = class(TForm)
Image1: TImage;
Load: TButton;
BShow: TButton;
BClear: TButton;
DBNavigator1: TDBNavigator;
Label34: TLabel;
DBESeriesNo: TDBEdit;
Label44: TLabel;
DBEName: TDBEdit;
Label1: TLabel;
DBMemo1: TDBMemo;
TEquipment: TTable;
EquipmentSrc: TDataSource;
TEquipmentSeriesNo: TStringField;
TEquipmentName: TStringField;
TEquipmentGraph: TBlobField;
TEquipmentRemarks: TStringField;
BClose: TButton;
OpenPictureDialog1: TOpenPictureDialog;
procedure FormShow(Sender: TObject);
procedure LoadClick(Sender: TObject);
procedure BShowClick(Sender: TObject);
procedure BClearClick(Sender: TObject);
procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
procedure BCloseClick(Sender: TObject);
// procedure TEquipmentAfterScroll(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
EquipmentFrm: TEquipmentFrm;
implementation
{$R *.dfm}
procedure TEquipmentFrm.FormShow(Sender: TObject);
begin
DBNavigator1.DataSource := EquipmentSrc;
DBESeriesNo.DataSource := EquipmentSrc;
DBEName.DataSource := EquipmentSrc;
DBMemo1.DataSource := EquipmentSrc;
DBESeriesNo.DataField := TEquipment.Fields[0].FieldName ;
DBEName.DataField := TEquipment.Fields[1].FieldName ;
DBMemo1.DataField := TEquipment.Fields[3].FieldName ;
//若graph字段无图像,Bshow和BClear按钮就为禁用
if TEquipmentGraph.IsNull then
begin
BShow.Enabled := false;
BClear.Enabled := false ;
end
else
begin
BShow.Enabled := true;
BClear.Enabled := true;
end;
end;
procedure TEquipmentFrm.LoadClick(Sender: TObject);
begin
openPicturedialog1.Title := '请选择一个小于128k的图像文件';
openPicturedialog1.InitialDir := 'e:\hm\equipment\delphi\sbc\image';
openPicturedialog1.Filter := 'jpg Files(*.jpg)|*.jpg or *.jpeg|All Files(*.*)|*.*';
if openPicturedialog1.Execute then {获取图片的文件名}
begin
TEquipment.Edit;
//保存JPEG图像到graph字段
TEquipmentGraph.LoadFromFile(openPicturedialog1.filename);
BShow.Enabled := true;
BClear.Enabled := true;
end;
end;
//显示图片
procedure TEquipmentFrm.BShowClick(Sender: TObject);
var
ttBlobStream: TBlobStream;
ttJpegImage : TJpegImage;
begin
ttBlobStream := TBlobStream.Create(TEquipmentGraph,bmRead);
try
ttJpegImage := TJpegImage.Create;
try
ttJpegImage.LoadFromStream(ttBlobStream);
image1.Picture.Graphic := ttJpegImage;
finally
ttJpegImage.Free ;
end;
finally
ttBlobStream.Free ;
end;
end;
//将图片从数据库中清楚
procedure TEquipmentFrm.BClearClick(Sender: TObject);
begin
if MessageDlg('你确信要从数据库中将该记录的图片清除吗?',mtWarning,[mbOK,mbCancel],0) = mrOK then
begin
TEquipment.Edit;
TEquipmentGraph.Clear;
end;
//若graph字段无图像,Bshow和BClear按钮就为禁用
if TEquipmentGraph.IsNull then
begin
BShow.Enabled := false;
BClear.Enabled := false ;
end
else
begin
BShow.Enabled := true;
BClear.Enabled := true;
end;
end;
//每次移动结果集,判断该条记录是否有图像,若无就不可以显示和清除图像
procedure TEquipmentFrm.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);
begin
if Button in [nbFirst,nbPrior, nbNext,nbLast] then
begin
//若想每次移动记录,Image就清空,避免显示图像浪费资源,可加入以下代码
Image1.Picture.Assign(nil);
//若graph字段无图像,Bshow和BClear按钮就为禁用
if TEquipmentGraph.IsNull then
begin
BShow.Enabled := false;
BClear.Enabled := false ;
end
else
begin
BShow.Enabled := true;
BClear.Enabled := true;
end;
end;
end;
procedure TEquipmentFrm.BCloseClick(Sender: TObject);
begin
if TEquipment.State in [dsInsert,dsEdit] then
TEquipment.Post;
EquipmentFrm.Close;
end;
{
//用 TMemoryStream 实现JPEG图像的保存
procedure TDearInputFrm.BsaveClick(Sender: TObject);
var
ttMemoryStream:TMemoryStream;
ttJpegImage:TJpegImage;
sqlUpdate:String;
begin
opendialog1.InitialDir := 'e:\hm\equipment\delphi\sbc\image';
ttJpegImage := TJpegImage.Create;
ttMemoryStream := TMemoryStream.Create;
if opendialog1.Execute then
ttJpegImage.LoadFromFile(opendialog1.fileName);
ttJpegImage.saveToStream(ttMemoryStream);
sqlUpdat