Q&A

  • 구창민님 이 문제 해결좀....
안녕하십니까?

저번 저의 이미지 변환에 대해 잘 보았습니다.

그것을 적용하다보니 막히는 부분이 있어서 다시 한번 문의 드립니다.

이번엔 저의 소스도 문제가 발생하는 부분에 대해 올리겠습니다.



procedure Tfrm_jass100f.jagyDblClick(Sender: TObject);

var

jpg : TJPEGimage;

mem : TMemorystream;

blobfield :Tblobfield;

begin

jpg := TJPEGimage.create;

mem := TMemorystream.create;

try

if query1.fields[2].isnull then

image1.picture := nil

else begin

==> blobfield := query1.fieldbyname('dr_image_j').asblob;

==> blobfield.savetostream(mem);

mem.position := 0;

jpg.loadformstream(mem);

image1.Picture.graphic := jpg;

end;

finally

mem.free;

jpg.free;

end;



end;

gtsh.lines.text := query1.fields[4].asstring;

ssdk.setfocus;

end;



이 부분의 설명을 드리자면

화면에서 grid를 더블클릭을 하면 해당되는 레코드의 각 필드를 editbox와

일반 이미지 conpoment 에 넣으려고 하는데

==> 부분에서 error가 발생합니다.



blobfield := query1.fieldbyname('dr_image_j').asblob;

이 부분은 asblob자체가 선언이 되지 않았다고 합니다.

정말 어찌할 줄 모르겠어요....?



도와주세요...

unit jass100f;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ExtCtrls, Db, DBTables, ExtDlgs, StdCtrls, HMEdit, HMClock, flabel,

Buttons, Grids, DBGridEH, jpeg;



type

Tfrm_jass100f = class(TForm)

cmd_help: TBitBtn;

Panel1: TPanel;

tflabel1: tflabel;

Label1: TLabel;

HMClock1: THMClock;

Panel4: TPanel;

cls: TBitBtn;

serch: TBitBtn;

INS: TBitBtn;

UPD: TBitBtn;

Panel2: TPanel;

jadate: THMEdit;

Label4: TLabel;

Label2: TLabel;

jano: THMEdit;

Label6: TLabel;

jail: THMEdit;

janm: THMEdit;

Panel5: TPanel;

Label9: TLabel;

Label8: TLabel;

Panel15: TPanel;

lbl_msg: TPanel;

Panel16: TPanel;

Query1: TQuery;

Query2: TQuery;

Query3: TQuery;

BitBtn4: TBitBtn;

Panel3: TPanel;

Label3: TLabel;

Label5: TLabel;

dnkey0: TBitBtn;

gjnm: THMEdit;

ssdk: THMEdit;

jagy: TDBGridEH;

DataSource1: TDataSource;

jaky: TMemo;

Memo3: TMemo;

ScrollBox1: TScrollBox;

Panel6: TPanel;

Label10: TLabel;

Label12: TLabel;

Panel7: TPanel;

Image1: TImage;

Panel8: TPanel;

Image2: TImage;

ksj: TMemo;

ksh: TMemo;

Label7: TLabel;

gtsh: TMemo;

procedure clsClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure jagyDblClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;



var

frm_jass100f: Tfrm_jass100f;



implementation

uses c0comlib, c0comsub, swcd, menu;

{$R *.DFM}





procedure Tfrm_jass100f.clsClick(Sender: TObject);

begin

close;

end;



procedure Tfrm_jass100f.FormShow(Sender: TObject);

begin

query1.close;

query1.sql.clear;

query1.sql.add(' select bucd from isiscdmp where swcd='''+c0com.usid+''' ');

query1.open;



query2.close;

query2.parambyname('bucd'). asstring := query1.fieldbyname('bucd').asstring;

query2.open;

end;



procedure Tfrm_jass100f.jagyDblClick(Sender: TObject);

var

jpg : TJPEGimage;

mem : TMemorystream;

blobfield :Tblobfield;

begin

jagy.Visible := false;

jadate.text := query2.fields[0].asstring;

jano.text := query2.fields[1].asstring;

jail.text := query2.fields[2].asstring;

janm.text := query2.fields[3].asstring;

jaky.Lines.Text := query2.fields[5].asstring;

ksj.lines.text := query2.fields[6].asstring;

ksh.lines.text := query2.fields[7].asstring;



query1.close;

query1.sql.clear;

query1.sql.add(' select * from jadrawtr where js_date = '''+jadate.text+''' ');

query1.sql.add(' and js_no = '''+jano.text+''' ');

query1.open;



if query1.eof then begin

jpg := TJPEGimage.create;

mem := TMemorystream.create;

try

if query1.fields[2].isnull then

image1.picture := nil

else begin

blobfield := query1.fieldbyname('dr_image_j').asblob;

blobfield.savetostream(mem);

mem.position := 0;

jpg.loadformstream(mem);

image1.Picture.graphic := jpg;

end;

finally

mem.free;

jpg.free;

end;



jpg := TJPEGimage.create;

mem := TMemorystream.create;

try

if query1.fields[3].isnull then

image2.picture := nil

else begin

{ query1.fields[3].savetostream(mem);

mem.position := 0;

jpg.loadformstream(mem);

image2.Picture.graphic := jpg;}

end;

finally

mem.free;

jpg.free;

end;

end;

gtsh.lines.text := query1.fields[4].asstring;

ssdk.setfocus;

end;



end.



1  COMMENTS
  • Profile
    구창민 1999.07.01 08:43
    장경석님 안녕하세요? 구창민입니다.

    에구.. 이름을 지목하시니 당황스럽습니다.

    우선 소스를 살펴보면,



    > procedure Tfrm_jass100f.jagyDblClick(Sender: TObject);

    > var

    > jpg : TJPEGimage;

    > mem : TMemorystream;

    > blobfield :Tblobfield;

    > begin

    > jpg := TJPEGimage.create;

    > mem := TMemorystream.create;

    > try

    > if query1.fields[2].isnull then

    > image1.picture := nil

    > else begin

    > ==> blobfield := query1.fieldbyname('dr_image_j').asblob;

    //이부분이 의아합니다.

    //윗줄을 삭제 하시고 한번 해 보십시오.

    //그리드를 클릭하셨다면 현위치로 레코드가 이동했을 것이고

    //아래 문장에서

    > ==> blobfield.savetostream(mem);

    //현재 레코드의 BlobField를 메모리에 올리고 있습니다,

    > mem.position := 0;

    > jpg.loadformstream(mem);

    //메모리에서 TJpeg 객체로 읽어들여

    > image1.Picture.graphic := jpg;

    //객체를 이미지에 대입했으니 제대로 될것 같습니다.

    //직접 테스트 할수 있는 환경이 못되어 테스트는 해 보지 못했습니다.

    > end;

    > finally

    > mem.free;

    > jpg.free;

    > end;

    >

    > end;

    > gtsh.lines.text := query1.fields[4].asstring;

    > ssdk.setfocus;

    > end;



    말씀드린 대로, 그 문장을 삭제하시고 한번 해보시고 안되시면

    다시 질문올려주시기 바랍니다.

    그리고, 앞으로는 이름을 지목하시지는 마셨으면..^^;;

    그럼.. 즐거운 프로그래밍 되세요~