打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Delphi 实现显示和存放JPEG图形的控件

最新Delphi 实现显示和存放JPEG图形的控件

以下是三零网为大家整理的最新Delphi 实现显示和存放JPEG图形的控件的文章,希望大家能够喜欢!

 

unit JPGDBImage;
interface
uses Classes, DBCtrls, Controls, Graphics, JPEG, DB;
type
TJPGDBImage = class(TDBImage)
public
constructor Create(AOwner: TComponent); override;
end;

implementation

type
TGraphicHeader = record
Count: Word; { Fixed at 1 }
HType: Word; { Fixed at $0100 }
Size: Longint; { Size not including header }
end;

TDBPicture = class(TPicture)
public
procedure Assign(Source: TPersistent); override;
end;

{$HINTS OFF}
THackDBImage = class(TCustomControl)
private
FDataLink: TFieldDataLink;
FPicture: TPicture;
end;
{$HINTS ON}

procedure TDBPicture.Assign(Source: TPersistent);
var
BlobStream: TStream;
BMPTag: array [0..1] of Char;
AJPG: TJPEGImage;
Size, SavePos: Integer;
Header: TGraphicHeader;
begin
if (Source is TField) and (TField(Source).IsBlob) and not TField(Source).IsNull then
begin
BlobStream := TField(Source).DataSet.CreateBlobStream(TField(Source), bmRead);
try
Size := BlobStream.Size;
if Size >= SizeOf(TGraphicHeader) then
begin
BlobStream.Read(Header, SizeOf(Header));
if (Header.Count <> 1) or (Header.HType <> $0100) or
(Header.Size <> Size - SizeOf(Header)) then
BlobStream.Position := 0;
end;
SavePos := BlobStream.Position;
BlobStream.Read(BMPTag, 2);
BlobStream.Position := SavePos;
if (BMPTag[0] = 'B') and (BMPTag[1] = 'M') then
LoadFromStream(BlobStream)
else
begin
AJPG := TJPEGImage.Create;
try
AJPG.LoadFromStream(BlobStream);
inherited Assign(AJPG);
finally
AJPG.Free;
end;
end;
finally
BlobStream.Free;
end;
end
else
inherited;
end;

constructor TJPGDBImage.Create(AOwner: TComponent);
var
ADBPicture: TDBPicture;
begin
inherited;

ADBPicture := TDBPicture.Create;
ADBPicture.OnChange := THackDBImage(Self).FPicture.OnChange;
THackDBImage(Self).FPicture.Free;
THackDBImage(Self).FPicture := ADBPicture;
end;

end.  
// www.q3060.com

 


延伸阅读:
·Delphi 利用 DBGrid控件实现“点击标题栏自动排序功能”
·Delphi 状态栏控件应用实例
·Delphi 控制 DBGrid控件显示单元格
·Delphi 数据库开发 Query控件 介绍
·Delphi 利用 DBGrid控件的Sort属性实现标题栏自动排序
·Delphi 控制控件随窗体变化
·Delphi 不使用第三方控件实现XP风格POP菜单
·Delphi 简易托盘图标控件(TTrayIcon)介绍
·Delphi 实现 DbGrid控件标题栏弹出菜单
·Delphi 利用 DbGrid控件隐藏或显示标题栏
·Delphi 实现在 DBGrid控件中显示图形
·Delphi 实现定制 DBGrid 控件 示例
·Delphi 在TDBGrid控件实现拖放
·Delphi 数据网格控件的6种特殊效果的实现方法
·delphi 开发透明组件(控件)示例
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Delphi中DB.PAS变迁概略
C# 拷贝两个实体属性值
TeeChart7 在delphi7中的安装步骤
Delphi Move - 移动内存块
delphi xe6 android ListView增加 Header或Footer 的方法
802.3/TCP/UDP包头结构
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服