Q&A

  • DBGrid에 이미지 넣기 ?
제가 만든 테이블에는 이미지 path만 있고 그 Path를 이용하여 이미지를

불러와 그것을 DBGrid에 넣을 수 있는지 알고 싶습니다.

좀 황당한 생각이라는 것을 할고 있지만 저와 같은 생각을 하셨던 분이

있을 거라고 생각하며 방법이 있다면 알고 싶어서 몇자 적어봅니다.



Table Layout



No Name ImagePath

---------------------------

1 aaa c:aaa.jpg

2 bbb c:bbb.jpg

1  COMMENTS
  • Profile
    조규춘 2000.10.20 12:01
    김준구 wrote:

    > 제가 만든 테이블에는 이미지 path만 있고 그 Path를 이용하여 이미지를

    > 불러와 그것을 DBGrid에 넣을 수 있는지 알고 싶습니다.

    > 좀 황당한 생각이라는 것을 할고 있지만 저와 같은 생각을 하셨던 분이

    > 있을 거라고 생각하며 방법이 있다면 알고 싶어서 몇자 적어봅니다.

    >

    > Table Layout

    >

    > No Name ImagePath

    > ---------------------------

    > 1 aaa c:aaa.jpg

    > 2 bbb c:bbb.jpg





    안녕하십니까?

    델세상(http://www.freechal.com/delphiworld) 조규춘입니다.







    http://user.chollian.net/~garam4g/test.gif 의 링크가보셔요!

    만약 링크했을때의 그림과 같은 식이라면 아래처럼 하십시요





    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;

    DataCol: Integer; Column: TColumn; State: TGridDrawState);

    var

    bmp : Tbitmap;

    outrect : Trect;

    bmpwidth : integer;

    begin

    // 디폴트 출력

    outrect := rect;



    // 여기서 그림이 들어가기 원하는 필드를 선택합니다.

    // 그리고 FileExists를 쓰는 이유는

    // 그 지정한 경로에 그림이 없거나

    // 데이터 추가시 에러가 생기기 때문에 그 유무를 따집니다.

    if (Column.Field = Table1.FieldByName('Image')) and

    (FileExists(Table1.FieldByName('Name').AsString)) then

    begin

    // 이미지 그리기

    bmp := Tbitmap.Create;

    try

    // 그림의 경로를 선언한 필드의 경로값을 가져온당..

    bmp.LoadFromFile(Table1.FieldByName('Name').AsString);

    bmpWidth := (rect.Bottom - Rect.Top) * 2;

    Outrect.Right := Rect.Left + bmpwidth;

    DBgrid1.Canvas.StretchDraw(Outrect, bmp);

    finally

    bmp.free;

    end;

    //직사각형을 지우고 그래픽이 들어갈 자리를 남겨둔다.;

    outrect := rect;

    outrect.Left := outrect.left + bmpwidth;

    end;



    // 디폴트 드로잉

    DBGrid1.DefaultDrawDataCell(outrect,column.field,state);

    end;





    end.







    행복하셔용~