LCL: Improvements for DBImage. Issue #22416, patch from Tony Whyman

git-svn-id: trunk@40924 -
This commit is contained in:
juha 2013-04-29 06:10:33 +00:00
parent 5628ed72f2
commit 8d88bf826d
2 changed files with 17 additions and 2 deletions

View File

@ -969,10 +969,15 @@ Type
{ TDBImage }
TOnDBImageRead = procedure(Sender: TObject; S: TStream; var GraphExt : string) of object;
TOnDBImageWrite = procedure(Sender: TObject; S: TStream; GraphExt : string) of object;
TDBImage = class(TCustomImage)
private
FDataLink: TFieldDataLink;
FAutoDisplay: Boolean;
FOnDBImageRead: TOnDBImageRead;
FOnDBImageWrite: TOnDBImageWrite;
FQuickDraw: Boolean;
FPictureLoaded: boolean;
FUpdatingRecord: boolean;
@ -1011,6 +1016,9 @@ Type
property DragMode;
property OnClick;
property OnDblClick;
property OnDBImageRead: TOnDBImageRead read FOnDBImageRead write FOnDBImageRead;
property OnDBImageWrite: TOnDBImageWrite read FOnDBImageWrite write FOnDBImageWrite;
property PopupMenu;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;

View File

@ -107,7 +107,10 @@ begin
try
i := pos(';',fe);
if i > 0 then fe := copy(fe,1,i-1);
s.WriteAnsiString(fe);
if assigned(FOnDBImageWrite) then
OnDBImageWrite(self,s,fe) //Call extermal method to save type of image
else
s.WriteAnsiString(fe); //otherwise write file extension to stream
Picture.Graphic.SaveToStream(s);
finally
s.Free;
@ -152,7 +155,11 @@ begin
end;
AGraphic := nil;
try
GraphExt := s.ReadAnsiString;
if assigned(FOnDBImageRead) then
OnDBImageRead(self,s,GraphExt) //External method to identify graphic type
//returns file extension for graphic type (e.g. jpg)
else
GraphExt := s.ReadAnsiString; //Read file extension Graphic type from stream
gc := GetGraphicClassForFileExtension(GraphExt);
if assigned(gc) then