::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-06 21:19:14, Hit : 5205, Vote : 1252
 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에 저장된 JPEG(JPG)를 DBGrid에 출력하기  김영대 2003/03/06 5205 1252
610   [데이터베이스] 동적으로 인덱스 만들기  김영대 2003/03/06 4406 1126
609   [데이터베이스] Excel ODBC를 사용하여 xls를 테이블로 사용하기  김영대 2003/03/06 6773 1563
608   [데이터베이스] DB alias중 ORACLE alias 명 구하기  김영대 2003/03/06 3975 969
607   [일반/컴포넌트] QuickReport에서 프린터 바꾸어서 출력하기  김영대 2003/03/06 6124 1521
606   [일반/컴포넌트] RichEdit 의 내용을 Bitmap 으로 만들기  김영대 2003/03/06 3309 864
605   [일반/컴포넌트] RichEdit 에서 문자(열)를 찾아 글자속성 바꾸기  김영대 2003/03/06 4683 1210
604   [일반/컴포넌트] RichEdit 에서 커서를 처음, 마지막으로 보내기  김영대 2003/03/06 6790 1471
603   [윈도우즈 API] 실행중인 모든 프로그램 Minimized 시키기  김영대 2003/03/06 4619 1226
602   [시스템] 델파이로 DOS 프로그램(Console application) 만들기  김영대 2003/03/06 9579 7512
601   [COM/OLE] Registering *.tlb files without Delphi  김영대 2003/03/06 4916 1128
600   [네트웍/인터넷] How to bring a network down - "Win Nuke"  김영대 2003/03/06 7255 1991
599   [윈도우즈 API] 폴더나 파일의 윈도우즈 등록정보 dialog 띄우기  김영대 2003/03/06 5063 1473
598   [일반/컴포넌트] 이미지를 마우스로 drag 해서 zoom 하기  김영대 2003/03/06 3574 1015
597   [윈도우즈 API] 외부 프로그램을 최상위로 설정하기  김영대 2003/03/06 5167 1227
596   [일반/컴포넌트] TObject의 프로퍼티를 문자열로 참조하기  김영대 2003/03/06 5188 1591
595   [윈도우즈 API] 프로그램으로 Screensaver 등록하는 두가지 방법  김영대 2003/03/06 4436 1261
594   [데이터베이스] 특정 폼의 현재 편집중인 DB Field 구하기  김영대 2003/03/06 4045 1109
593   [윈도우즈 API] KeyDown의 Beep음을 없애자...  김영대 2003/03/06 4570 1210
592   [시스템] How do I use SetWindowsHookEx ?  김영대 2003/03/06 6700 954
591   [시스템] Redirecting DOS Application Output  김영대 2003/03/06 4445 1200
590   [일반/컴포넌트] 두개의 RichEdit 사이에 내용 복사하기  김영대 2003/03/06 5768 1355
589   [일반/컴포넌트] 특정 Color의 Invert Color 구하기  김영대 2003/03/06 4295 1315
588   [일반/컴포넌트] 문자열 수식문장(expression)의 결과 구하기  김영대 2003/03/06 3237 866
587   [시스템] 오디오 CD의 볼륨 조절하기  김영대 2003/03/06 3566 1025
586   [일반/컴포넌트] 윈도우즈 "날짜/시간" 설정화면 띄우기  김영대 2003/03/06 6168 1822
585   [시스템] 마이크 볼륨 조절하기  김영대 2003/03/06 4588 1284
584   [멀티미디어] JPEG, WAVE 를 resource 파일에 넣고 읽어오기  김영대 2003/03/06 5165 1223
583   [일반/컴포넌트] desktop 배경화면을 폼의 배경화면으로 그리기  김영대 2003/03/06 3631 1037
582   [윈도우즈 API] 레지스트리의 변경여부 알리는 2가지 방법  김영대 2003/03/06 4713 1269
581   [일반/컴포넌트] StringGrid 의 내용을 클립보드로 복사하기  김영대 2003/03/06 4417 1060
580   [데이터베이스] Save DBGrid To Excel  김영대 2003/03/06 6585 1591
579   [COM/OLE] Delphi의 OCX를 InstallShield로 배포하는 방법  김영대 2003/03/06 6676 5611
578   [일반/컴포넌트] ASCII printing  김영대 2003/03/06 5036 1204
577   [일반/컴포넌트] OEM conversion  김영대 2003/03/06 4280 1261
576   [일반/컴포넌트] Memo의 행의 문자수를 제한하고 WordWrap시키기  김영대 2003/03/06 5159 1314
575   [윈도우즈 API] DDE 쓰지 않고 IE의 현재 URL 가져오기  김영대 2003/03/06 5949 1669
574   [윈도우즈 API] RichEdit에 입력한 문장의 실제 높이 구하기  김영대 2003/03/06 5001 1425
573   [일반/컴포넌트] StringGrid 의 선택영역만 클립보드로 복사하기  김영대 2003/03/06 4802 1044
572   [일반/컴포넌트] StringGrid 에서 프로그램으로 MultiSelect 시키기  김영대 2003/03/06 5334 1186

[1][2][3][4][5][6][7][8][9] 10 ..[25] [다음 10개]
 

Copyright 1999-2022 Zeroboard / skin by zero