Q&A

  • 메세지 박스에 관해서...
messagedlg에서 마지막에 0 을 써주는 데.....

messagedlg('궁금해서',mterror,[mbok],0)

여기서 0 이 무엇을 의미 하는지 궁금하군요...

그리구 한가지 만더 dbgrid에서 dbgrid화면에 그림을 넣을 수 있는지 궁금합니다.

점가르쳐주세요.



2  COMMENTS
  • Profile
    류한규 1999.11.27 21:08
    안녕하십니까?



    메세지 박스가 나온 상태에서 Help(F1, Help Button)를 나오게할때

    Help Context ID입니다.



    노인기 wrote:

    > messagedlg에서 마지막에 0 을 써주는 데.....

    > messagedlg('궁금해서',mterror,[mbok],0)

    > 여기서 0 이 무엇을 의미 하는지 궁금하군요...

    > 그리구 한가지 만더 dbgrid에서 dbgrid화면에 그림을 넣을 수 있는지 궁금합니다.

    > 점가르쳐주세요.

    >

  • Profile
    김영대 1999.11.27 21:06
    노인기 wrote:

    > messagedlg에서 마지막에 0 을 써주는 데.....

    > messagedlg('궁금해서',mterror,[mbok],0)

    > 여기서 0 이 무엇을 의미 하는지 궁금하군요...

    > 그리구 한가지 만더 dbgrid에서 dbgrid화면에 그림을 넣을 수 있는지 궁금합니다.

    > 점가르쳐주세요.



    0 의 의미는 그 박스가 보여지는 상태에서 도움말(F1)을 호출했을때

    도움말로 보여줄 도움말 파일 topic의 context ID 입니다

    context ID 는 WWW로 치면 hyper link 정도 되겠죠

    하지만 그 프로그램에 도움말 파일을 만들지 않았다면 의미가 없기 때문에

    보통 0 으로 설정해 놓습니다



    // 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.