Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
DB에 사진넣을려고 하는데..
안녕하세요!
저는 이제 막 델파이 공부를 하는 직장인입니다.
다름이 아니구요!
Edit박스로 성명이나 주민번호를 조회해서, DBIMAGE에 개개인의 사진을
출력하고자 합니다.
방법을 알려주시구요! 그리고 따로 사진이라는 필드(레코드)를 만들지 않았습니다.
저장방법도 묻고 싶네요.
아무쪼록 좋은 방법을 제시 해주시면 정말 감사드리겠습니다.
2
COMMENTS
김영대
•
1999.04.23 18:04
이현아 wrote:
> 안녕하세요!
> 저는 이제 막 델파이 공부를 하는 직장인입니다.
> 다름이 아니구요!
> Edit박스로 성명이나 주민번호를 조회해서, DBIMAGE에 개개인의 사진을
> 출력하고자 합니다.
> 방법을 알려주시구요! 그리고 따로 사진이라는 필드(레코드)를 만들지 않았습니다.
> 저장방법도 묻고 싶네요.
> 아무쪼록 좋은 방법을 제시 해주시면 정말 감사드리겠습니다.
안녕하세요 김영대입니다
만약 사용하시는 DBMS 가 ORACLE 이면 blob 필드의 data type을
long raw 로 사용하시면 됩니다
참고로 long 형은 2GB의 text 자료를 long raw 는 binary 자료를
2GB 까지 저장할 수 있습니다
다른 DB 들도 blob 필드를 만드는 해당 type이 따로 있을겁니다
unit DbJpeg;
interface
uses
Db, ExtCtrls, Classes, Graphics, Jpeg, SysUtils;
implementation
procedure JPEGSaveToDB(BlobField: TBlobField; FileName: String);
var
jpg: TJPEGImage;
bmp: TBitmap;
mem: TMemoryStream;
begin
if LowerCase(ExtractFileExt(FileName)) = '.jpg' then
begin
with BlobField do
begin
// 아래 DataSet.Edit; 는 저장된 그림을 수정(UPDATE)시 사용하며
// 신규 등록(INSERT)일때는 DataSet.Insert; 로 바꾸어야 한다
DataSet.Edit;
LoadFromFile(FileName);
DataSet.Post;
end;
end
else if LowerCase(ExtractFileExt(FileName)) = '.bmp' then
begin
// 파일이 BMP 이면 먼저 JPEG(JPG) 파일로 바꾼 후 저장한다
bmp := TBitmap.Create;
jpg := TJPEGImage.Create;
mem := TMemoryStream.Create;
try
bmp.LoadFromFile(FileName);
jpg.Assign(bmp);
jpg.SaveToStream(mem);
mem.Position := 0;
with BlobField do begin
DataSet.Edit;
LoadFromStream(mem);
DataSet.Post;
end;
finally
mem.Free;
jpg.Free;
bmp.Free;
end;
end
end;
procedure JPEGLoadFromDB(BlobField: TBlobField; Image: TImage);
var
jpg: TJPEGImage;
mem: TMemoryStream;
begin
jpg := TJPEGImage.Create;
mem := TMemoryStream.Create;
try
if BlobField.IsNull then
Image.Picture := nil
else begin
BlobField.SaveToStream(mem);
mem.Position := 0;
jpg.LoadFromStream(mem);
Image.Picture.Graphic := jpg;
end;
finally
mem.Free;
jpg.Free;
end;
end;
end.
-------------------------------------------------------------------------
// 아래는 DB에 저장된 JPEG(JPG)를 DBGrid에 출력하는 예제입니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, Grids, jpeg, extctrls, DBGrids;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Query1: TQuery;
Database1: TDatabase;
DBGridEH1: TDBGridEH;
procedure DBGridEH1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEH; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure JPEGLoadFromDB(BlobField: TBlobField; Image: TImage);
var
jpg: TJPEGImage;
mem: TMemoryStream;
begin
jpg := TJPEGImage.Create;
mem := TMemoryStream.Create;
try
if BlobField.IsNull then
Image.Picture := nil
else begin
BlobField.SaveToStream(mem);
mem.Position := 0;
jpg.LoadFromStream(mem);
Image.Picture.Graphic := jpg;
end;
finally
mem.Free;
jpg.Free;
end;
end;
procedure TForm1.DBGridEH1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEH;
State: TGridDrawState);
var
JPGimage: TImage;
SRect, DRect: TRect;
begin
if Column.FieldName= 'PHOTO' then
begin
JPGimage := TImage.Create(Self);
JPEGLoadFromDB(TBlobField(Query1.FieldByName('PHOTO')), JPGimage);
TDBGrid(Sender).Canvas.FillRect(Rect);
TDBGrid(Sender).Canvas.Draw(Rect.Left, Rect.Top, JPGimage.Picture.Graphic);
// Stretch 는 아래와 같이...
// TDBGrid(Sender).Canvas.StretchDraw(Rect, JPGimage.Picture.Graphic);
JPGimage.Free;
end
else // 다른 필드
begin
TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
end.
0
0
삭제
수정
댓글
이현아
•
1999.04.24 16:43
김영대 wrote:
> 이현아 wrote:
> > 안녕하세요!
> > 저는 이제 막 델파이 공부를 하는 직장인입니다.
> > 다름이 아니구요!
> > Edit박스로 성명이나 주민번호를 조회해서, DBIMAGE에 개개인의 사진을
> > 출력하고자 합니다.
> > 방법을 알려주시구요! 그리고 따로 사진이라는 필드(레코드)를 만들지 않았습니다.
> > 저장방법도 묻고 싶네요.
> > 아무쪼록 좋은 방법을 제시 해주시면 정말 감사드리겠습니다.
>
> 안녕하세요 김영대입니다
> 만약 사용하시는 DBMS 가 ORACLE 이면 blob 필드의 data type을
> long raw 로 사용하시면 됩니다
> 참고로 long 형은 2GB의 text 자료를 long raw 는 binary 자료를
> 2GB 까지 저장할 수 있습니다
> 다른 DB 들도 blob 필드를 만드는 해당 type이 따로 있을겁니다
>
> unit DbJpeg;
>
> interface
>
> uses
> Db, ExtCtrls, Classes, Graphics, Jpeg, SysUtils;
>
> implementation
>
> procedure JPEGSaveToDB(BlobField: TBlobField; FileName: String);
> var
> jpg: TJPEGImage;
> bmp: TBitmap;
> mem: TMemoryStream;
> begin
> if LowerCase(ExtractFileExt(FileName)) = '.jpg' then
> begin
> with BlobField do
> begin
> // 아래 DataSet.Edit; 는 저장된 그림을 수정(UPDATE)시 사용하며
> // 신규 등록(INSERT)일때는 DataSet.Insert; 로 바꾸어야 한다
> DataSet.Edit;
> LoadFromFile(FileName);
> DataSet.Post;
> end;
> end
> else if LowerCase(ExtractFileExt(FileName)) = '.bmp' then
> begin
> // 파일이 BMP 이면 먼저 JPEG(JPG) 파일로 바꾼 후 저장한다
> bmp := TBitmap.Create;
> jpg := TJPEGImage.Create;
> mem := TMemoryStream.Create;
> try
> bmp.LoadFromFile(FileName);
> jpg.Assign(bmp);
> jpg.SaveToStream(mem);
> mem.Position := 0;
> with BlobField do begin
> DataSet.Edit;
> LoadFromStream(mem);
> DataSet.Post;
> end;
> finally
> mem.Free;
> jpg.Free;
> bmp.Free;
> end;
> end
> end;
>
> procedure JPEGLoadFromDB(BlobField: TBlobField; Image: TImage);
> var
> jpg: TJPEGImage;
> mem: TMemoryStream;
> begin
> jpg := TJPEGImage.Create;
> mem := TMemoryStream.Create;
> try
> if BlobField.IsNull then
> Image.Picture := nil
> else begin
> BlobField.SaveToStream(mem);
> mem.Position := 0;
> jpg.LoadFromStream(mem);
> Image.Picture.Graphic := jpg;
> end;
> finally
> mem.Free;
> jpg.Free;
> end;
> end;
>
> end.
>
> -------------------------------------------------------------------------
> // 아래는 DB에 저장된 JPEG(JPG)를 DBGrid에 출력하는 예제입니다
>
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> Db, DBTables, Grids, jpeg, extctrls, DBGrids;
>
> type
> TForm1 = class(TForm)
> DataSource1: TDataSource;
> Query1: TQuery;
> Database1: TDatabase;
> DBGridEH1: TDBGridEH;
> procedure DBGridEH1DrawColumnCell(Sender: TObject; const Rect: TRect;
> DataCol: Integer; Column: TColumnEH; State: TGridDrawState);
> private
> { Private declarations }
> public
> { Public declarations }
> end;
>
> var
> Form1: TForm1;
>
> implementation
> {$R *.DFM}
>
> procedure JPEGLoadFromDB(BlobField: TBlobField; Image: TImage);
> var
> jpg: TJPEGImage;
> mem: TMemoryStream;
> begin
> jpg := TJPEGImage.Create;
> mem := TMemoryStream.Create;
> try
> if BlobField.IsNull then
> Image.Picture := nil
> else begin
> BlobField.SaveToStream(mem);
> mem.Position := 0;
> jpg.LoadFromStream(mem);
> Image.Picture.Graphic := jpg;
> end;
> finally
> mem.Free;
> jpg.Free;
> end;
> end;
>
> procedure TForm1.DBGridEH1DrawColumnCell(Sender: TObject;
> const Rect: TRect; DataCol: Integer; Column: TColumnEH;
> State: TGridDrawState);
> var
> JPGimage: TImage;
> SRect, DRect: TRect;
> begin
> if Column.FieldName= 'PHOTO' then
> begin
> JPGimage := TImage.Create(Self);
> JPEGLoadFromDB(TBlobField(Query1.FieldByName('PHOTO')), JPGimage);
> TDBGrid(Sender).Canvas.FillRect(Rect);
>
> TDBGrid(Sender).Canvas.Draw(Rect.Left, Rect.Top, JPGimage.Picture.Graphic);
> // Stretch 는 아래와 같이...
> // TDBGrid(Sender).Canvas.StretchDraw(Rect, JPGimage.Picture.Graphic);
> JPGimage.Free;
> end
> else // 다른 필드
> begin
> TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
> end;
> end;
>
> end.
>
답변 진심으로 감사드려요!
그런데 전 DB를 InormixDB를 사용합니다.
또한 저의 계획은 Local DB를 사용해(즉 informix DB)를
C 디렉토리를 따로 만들어 사진을 사번에 맞게 넣고자 합니다.
기법은 SQL을 사용할려고 하구요!
바쁘시겠지만 한번만 더 부탁을 드릴께요!
항상 감사드립니다.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
장태남
1999.07.05 19:13
0
COMMENTS
/
0
LIKES
한 프로그램에서 두개의 DB 를 동시에..
이한나
•
1999.07.05 18:41
3
COMMENTS
/
0
LIKES
리치에디터에서 커서위치를 화면 맨위로 가게 하려면.
문창완
•
1999.04.23 05:16
질문만 하는 사람입니다...@_@; 이번에 인터넷 검색엔진을 만들어야 하는데 이쪽에 대한 개념이 없어서리...
이정욱
•
1999.04.23 07:03
참.. 혹시 검색엔진이 야후같은것을 말씀하신것이라면 기본개념은 이렇습니다. 별것 아니죠. 데이타 베...
이정욱
•
1999.04.23 07:01
그냥 참고만 하세요~ http://www.nobreak.com 에 가시면 CrazySearch라는것이 있습니다. 그것의 소스를 ...
전진우
•
1999.04.23 04:02
2
COMMENTS
/
0
LIKES
[추가질문]mdb사용프로그램 배포문제 DAO3032
이한나
•
1999.07.05 16:12
이짜나요.rtf 파일인데 형식은다음과 같습니다. GE0101:......................... ........ GE0102...
이정욱
•
1999.04.23 06:58
저도 다오때문에 고생을 한적이 있었지요... 다오를 분명 설치를 했는데도 잘 안되더군요... 사실 저도 ...
pascal
1999.07.05 12:36
0
COMMENTS
/
0
LIKES
AVI 파일을 만들고 싶은데
배리스
•
1999.04.23 06:39
1
COMMENTS
/
0
LIKES
TMemo의 마지막으로 가게 하는 방법
이정욱
•
1999.04.23 07:08
파워러브 델파이 창간호의 일부 입니다~ 1. 현재 라인번호 알아내기 메모에서 현재 Caret이 위치하...
한범수
1999.04.23 05:58
0
COMMENTS
/
0
LIKES
잘않되는데? 어떻게 해결책이?(MDI &DLL)
김길중
•
1999.07.04 11:27
2
COMMENTS
/
0
LIKES
Access violation at address 00c9d57d ....
하명훈
•
1999.07.05 23:25
김길중 께서 말씀하시기를... > 또 올립니다. > > 테이블 바꿔주고 db 알리아스를 제데로 설정하였는데...
구창민
•
1999.07.04 22:19
김길중 께서 말씀하시기를... > 또 올립니다. > > 테이블 바꿔주고 db 알리아스를 제데로 설정하였는데...
이태호
•
1999.07.04 11:07
4
COMMENTS
/
0
LIKES
OnKeyDown에서 한글 입력시 키코드값 체크?
문창완
•
1999.04.23 05:16
질문만 하는 사람입니다...@_@; 이번에 인터넷 검색엔진을 만들어야 하는데 이쪽에 대한 개념이 없어서리...
이정욱
•
1999.07.04 11:19
한글은 두바이트로 되어있습니다. 즉, KeyDown에서는 처리가 안된다는 이야기죠. 복잡하게 안하시려면 On...
이정욱
•
1999.04.23 07:03
참.. 혹시 검색엔진이 야후같은것을 말씀하신것이라면 기본개념은 이렇습니다. 별것 아니죠. 데이타 베...
이정욱
•
1999.04.23 07:01
그냥 참고만 하세요~ http://www.nobreak.com 에 가시면 CrazySearch라는것이 있습니다. 그것의 소스를 ...
전진우
•
1999.04.23 04:02
1
COMMENTS
/
0
LIKES
[추가질문]mdb사용프로그램 배포문제 DAO3032
이정욱
•
1999.04.23 06:58
저도 다오때문에 고생을 한적이 있었지요... 다오를 분명 설치를 했는데도 잘 안되더군요... 사실 저도 ...
이소라
•
1999.07.04 10:27
2
COMMENTS
/
0
LIKES
RTF로 포멧된 파일의 일부만 가져올 수 있나요?
이정욱
•
1999.07.04 11:28
음.. 조금 쉬운 방법으로는 또하나의 RichEdit을 만들어서 Visible을 꺼 놓은 상태로 그곳으로 RTF를 Load...
이소라
•
1999.07.04 13:33
답장을 주셔서 감사드립니다. 그런데 제가 원하는 것은 RTF의 속성이 그대로 나타나는 것이거든요. 글...
조봉성
•
1999.04.23 02:54
1
COMMENTS
/
0
LIKES
Incompatible Type 'Integer' and 'Real' 에러문제
안치봉
•
1999.04.23 03:14
조봉성 wrote: > table1.FieldByName('Pay').AsInteger := Result / 30 * 1000; > Result 는 정수형임 >...
이만준
•
1999.07.04 10:14
2
COMMENTS
/
0
LIKES
특정 윈도우를 실행할 수 없도록 할려면..?
이정욱
•
1999.07.04 11:23
두가지 방법이 떠오르는 군요. 하나는 타이머를 이용한 방법. 또하나는 시스템 후킹을 이용한 방법입니다...
이만준
•
1999.07.05 09:11
답변 감사드립니다... 하하...그렇게 하면 되겠군요... 저는 실행되기 전에 막는 방법만 생각했었거...
이현아
•
1999.04.23 03:04
2
COMMENTS
/
0
LIKES
DB에 사진넣을려고 하는데..
안녕하세요! 저는 이제 막 델파이 공부를 하는 직장인입니다. 다름이 아니구요! Edit박스로 성명이나 주민번호를 조회해서, DBIMAGE에 개개인의 사진을 출력하고자 합니다. 방법을 알려주시구요! 그리고 따로 사진이라는 필드(레코드)를 ...
김영대
•
1999.04.23 18:04
이현아 wrote: > 안녕하세요! > 저는 이제 막 델파이 공부를 하는 직장인입니다. > 다름이 아니구요! >...
이현아
•
1999.04.24 16:43
김영대 wrote: > 이현아 wrote: > > 안녕하세요! > > 저는 이제 막 델파이 공부를 하는 직장인입니다. ...
이정환
•
1999.07.04 07:13
2
COMMENTS
/
0
LIKES
전역(Global) 변수의 값?
구창민
•
1999.07.04 22:14
이정환 께서 말씀하시기를... > 전역(Global) 변수로 > lineindex, linenumber, line: integer로 선언하...
이정환
•
1999.07.05 05:06
구창민님 답변에 감사드립니다. 제 코딩 실력을 보고 웃으셨겠군요. 답을 주신 것을 보고 저도 한참 웃...
조봉성
•
1999.04.23 02:54
1
COMMENTS
/
0
LIKES
Incompatible Type 'Integer' and 'Real' 에러문제
안치봉
•
1999.04.23 03:14
조봉성 wrote: > table1.FieldByName('Pay').AsInteger := Result / 30 * 1000; > Result 는 정수형임 >...
손인호
1999.07.04 04:31
0
COMMENTS
/
0
LIKES
쉽게 처리하세요.
전진우
•
1999.04.23 02:14
1
COMMENTS
/
0
LIKES
질문:mdb사용프로그램 배포시의 문제. DAO3032
이정욱
•
1999.04.23 02:45
You need the following files to install DAO 3.5: Table 1 File name Location DAO350.DLL C:Program...
김길중
•
1999.07.04 02:30
1
COMMENTS
/
0
LIKES
편집이 안되어서...
이정욱
•
1999.07.04 11:30
편집기에서 마우스의 오른쪽 버튼을 눌러보세요. 그곳에 ReadOnly라는곳을 꺼주세요. 그리고 혹시 모르...
전진우
•
1999.04.23 02:14
1
COMMENTS
/
0
LIKES
질문:mdb사용프로그램 배포시의 문제. DAO3032
이정욱
•
1999.04.23 02:45
You need the following files to install DAO 3.5: Table 1 File name Location DAO350.DLL C:Program...
김정민
•
1999.07.04 00:56
6
COMMENTS
/
0
LIKES
델파이로 만든 웹 애플리케이션을 솔라리스로 ..
임윤경
•
1999.04.23 00:54
제가 김영대씨 홈페이지에서 받은 FTP서버의 파일을 PC로 다운로드하는 소스에 보면, receive용 socket이라...
이정욱
•
1999.07.04 09:24
불가능 합니다. NT서버를 옆에 붙여 놓고 같이 사용하는 수 밖에는.... 김정민 께서 말씀하시기를... ...
김영대
•
1999.04.23 18:23
임윤경 wrote: > 제가 김영대씨 홈페이지에서 받은 FTP서버의 파일을 PC로 다운로드하는 소스에 보면, rec...
김정민
•
1999.07.04 22:40
정말로 불가능한건가요.. 다른 누구도 아닌 정욱님께서 불가능하다고 잘라 말하시니 온몸에 힘이 쭉.. 빠집...
이정욱
•
1999.07.05 07:59
포팅이라는것이... 쩝... 포팅라이브러리같은것은 없습니다. 그런것이 아니구요.. 혹시 솔라리스용 ...
안치봉
•
1999.07.04 04:55
솔라리스용으로 포팅하면 됩니다. 김정민 께서 말씀하시기를... > 델파이로 만든 웹 애플리케이션을 솔...
이현아
1999/04/23 03:04
Views
510
Likes
0
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 안녕하세요!
> 저는 이제 막 델파이 공부를 하는 직장인입니다.
> 다름이 아니구요!
> Edit박스로 성명이나 주민번호를 조회해서, DBIMAGE에 개개인의 사진을
> 출력하고자 합니다.
> 방법을 알려주시구요! 그리고 따로 사진이라는 필드(레코드)를 만들지 않았습니다.
> 저장방법도 묻고 싶네요.
> 아무쪼록 좋은 방법을 제시 해주시면 정말 감사드리겠습니다.
안녕하세요 김영대입니다
만약 사용하시는 DBMS 가 ORACLE 이면 blob 필드의 data type을
long raw 로 사용하시면 됩니다
참고로 long 형은 2GB의 text 자료를 long raw 는 binary 자료를
2GB 까지 저장할 수 있습니다
다른 DB 들도 blob 필드를 만드는 해당 type이 따로 있을겁니다
unit DbJpeg;
interface
uses
Db, ExtCtrls, Classes, Graphics, Jpeg, SysUtils;
implementation
procedure JPEGSaveToDB(BlobField: TBlobField; FileName: String);
var
jpg: TJPEGImage;
bmp: TBitmap;
mem: TMemoryStream;
begin
if LowerCase(ExtractFileExt(FileName)) = '.jpg' then
begin
with BlobField do
begin
// 아래 DataSet.Edit; 는 저장된 그림을 수정(UPDATE)시 사용하며
// 신규 등록(INSERT)일때는 DataSet.Insert; 로 바꾸어야 한다
DataSet.Edit;
LoadFromFile(FileName);
DataSet.Post;
end;
end
else if LowerCase(ExtractFileExt(FileName)) = '.bmp' then
begin
// 파일이 BMP 이면 먼저 JPEG(JPG) 파일로 바꾼 후 저장한다
bmp := TBitmap.Create;
jpg := TJPEGImage.Create;
mem := TMemoryStream.Create;
try
bmp.LoadFromFile(FileName);
jpg.Assign(bmp);
jpg.SaveToStream(mem);
mem.Position := 0;
with BlobField do begin
DataSet.Edit;
LoadFromStream(mem);
DataSet.Post;
end;
finally
mem.Free;
jpg.Free;
bmp.Free;
end;
end
end;
procedure JPEGLoadFromDB(BlobField: TBlobField; Image: TImage);
var
jpg: TJPEGImage;
mem: TMemoryStream;
begin
jpg := TJPEGImage.Create;
mem := TMemoryStream.Create;
try
if BlobField.IsNull then
Image.Picture := nil
else begin
BlobField.SaveToStream(mem);
mem.Position := 0;
jpg.LoadFromStream(mem);
Image.Picture.Graphic := jpg;
end;
finally
mem.Free;
jpg.Free;
end;
end;
end.
-------------------------------------------------------------------------
// 아래는 DB에 저장된 JPEG(JPG)를 DBGrid에 출력하는 예제입니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, Grids, jpeg, extctrls, DBGrids;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Query1: TQuery;
Database1: TDatabase;
DBGridEH1: TDBGridEH;
procedure DBGridEH1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEH; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure JPEGLoadFromDB(BlobField: TBlobField; Image: TImage);
var
jpg: TJPEGImage;
mem: TMemoryStream;
begin
jpg := TJPEGImage.Create;
mem := TMemoryStream.Create;
try
if BlobField.IsNull then
Image.Picture := nil
else begin
BlobField.SaveToStream(mem);
mem.Position := 0;
jpg.LoadFromStream(mem);
Image.Picture.Graphic := jpg;
end;
finally
mem.Free;
jpg.Free;
end;
end;
procedure TForm1.DBGridEH1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEH;
State: TGridDrawState);
var
JPGimage: TImage;
SRect, DRect: TRect;
begin
if Column.FieldName= 'PHOTO' then
begin
JPGimage := TImage.Create(Self);
JPEGLoadFromDB(TBlobField(Query1.FieldByName('PHOTO')), JPGimage);
TDBGrid(Sender).Canvas.FillRect(Rect);
TDBGrid(Sender).Canvas.Draw(Rect.Left, Rect.Top, JPGimage.Picture.Graphic);
// Stretch 는 아래와 같이...
// TDBGrid(Sender).Canvas.StretchDraw(Rect, JPGimage.Picture.Graphic);
JPGimage.Free;
end
else // 다른 필드
begin
TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
end.