Q&A

  • DBGrid Memofield로 내용 출력하기..
DBGrid에 Memo필드의 내용 출력하기 예제(아래의 소스)의 DatabaseName은 'DBDEMOS'이고 TableName은 'BIOLIFE.DB' 입니다

여기서DBgrid1drawdatacell 이벤트는 어떤 것이고 Table1Notes: TMemoField에서 TMemoField는 컴포넌트입니까. 아무리 찾아봐도 저한태는 없는것 같고 또한 Memofield로 원하는 데이터를 어떻게 넣는지 궁금합니다.또한 이래의 소스를 실행하면 table1notes:TmemoField가 폼에서 사용되진않은 (혹 선언되지 않은)것이 라고 에러가 뜨는데요?왜인가요?

그리고 프로시저에서 더이상진행이 않되는데 이유가 뭔가여?



//

unit Unit1;



interface



uses

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

Grids,DBGrids,Db,DBTables, StdCtrls;



type

TForm1 = class(TForm)

Table1: TTable;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Table1Notes: TMemoField;

Button1: TButton;

procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;

Field: TField; State: TGridDrawState);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const

MAX_CHARSIZE = 50;

var

Form1: TForm1;



implementation



{$R *.DFM}

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

Field: TField; State: TGridDrawState);

var

P: array [0..MAX_CHARSIZE] of char;

BS: TBlobStream;

S: String;

begin

if Field is TMemoField then

begin

with (Sender as TDBGrid).Canvas do

begin

{Table1Notes 은 TMemoField 형입니다}

BS := tBlobStream.Create(Table1Notes, bmRead);

FillChar(P,SizeOf(P),#0);



BS.Read(P, MAX_CHARSIZE); {blobStream 에서 MAX_CHARSIZE 바이트만큼 읽는다}

BS.Free;

S := StrPas(P);

while Pos(#13, S) > 0 do {CR 문자 제거}

S[Pos(#13, S)] := ' ';

while Pos(#10, S) > 0 do {LF 문자 제거}

S[Pos(#10, S)] := ' ';

FillRect(Rect);

TextOut(Rect.Left, Rect.Top, S);

end;

end;

end;





procedure TForm1.FormCreate(Sender: TObject);

begin



end;



end.



1  COMMENTS
  • Profile
    전철호 1999.06.07 20:11
    한 재 께서 말씀하시기를...

    > DBGrid에 Memo필드의 내용 출력하기 예제(아래의 소스)의 DatabaseName은 'DBDEMOS'이고 TableName은 'BIOLIFE.DB' 입니다

    > 여기서DBgrid1drawdatacell 이벤트는 어떤 것이고 Table1Notes: TMemoField에서 TMemoField는 컴포넌트입니까. 아무리 찾아봐도 저한태는 없는것 같고 또한 Memofield로 원하는 데이터를 어떻게 넣는지 궁금합니다.또한 이래의 소스를 실행하면 table1notes:TmemoField가 폼에서 사용되진않은 (혹 선언되지 않은)것이 라고 에러가 뜨는데요?왜인가요?

    > 그리고 프로시저에서 더이상진행이 않되는데 이유가 뭔가여?

    >

    > //

    > unit Unit1;

    >

    > interface

    >

    > uses

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

    > Grids,DBGrids,Db,DBTables, StdCtrls;

    >

    > type

    > TForm1 = class(TForm)

    > Table1: TTable;

    > DataSource1: TDataSource;

    > DBGrid1: TDBGrid;

    > Table1Notes: TMemoField;

    > Button1: TButton;

    > procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;

    > Field: TField; State: TGridDrawState);

    > procedure FormCreate(Sender: TObject);

    > private

    > { Private declarations }

    > public

    > { Public declarations }

    > end;

    > const

    > MAX_CHARSIZE = 50;

    > var

    > Form1: TForm1;

    >

    > implementation

    >

    > {$R *.DFM}

    > procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;

    > Field: TField; State: TGridDrawState);

    > var

    > P: array [0..MAX_CHARSIZE] of char;

    > BS: TBlobStream;

    > S: String;

    > begin

    > if Field is TMemoField then

    > begin

    > with (Sender as TDBGrid).Canvas do

    > begin

    > {Table1Notes 은 TMemoField 형입니다}

    > BS := tBlobStream.Create(Table1Notes, bmRead);

    > FillChar(P,SizeOf(P),#0);

    >

    > BS.Read(P, MAX_CHARSIZE); {blobStream 에서 MAX_CHARSIZE 바이트만큼 읽는다}

    > BS.Free;

    > S := StrPas(P);

    > while Pos(#13, S) > 0 do {CR 문자 제거}

    > S[Pos(#13, S)] := ' ';

    > while Pos(#10, S) > 0 do {LF 문자 제거}

    > S[Pos(#10, S)] := ' ';

    > FillRect(Rect);

    > TextOut(Rect.Left, Rect.Top, S);

    > end;

    > end;

    > end;

    >

    >

    > procedure TForm1.FormCreate(Sender: TObject);

    > begin

    >

    > end;

    >

    > end.

    >



    제 홈페이지에 가서 보시면 메모,그림을 화면에 디스프레이 하는

    디비그리드 콤포넌트 소스가 있으니 참고하세요.

    홈페이지 주소(http://my.netian.com/~jeon0813)

    • 구민오
    • 1999.02.05 11:02
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 세림
      1999.06.07 19:28
      간단한 웹서버 응용을 테스트하고 있는데 처음에는 익스플러어에서 실행되더니 다음부터는 연결 프로그...
    • 이정욱
      1999.02.06 09:54
      인터넷 프로그래밍을 하시면서 유해정보차단장치를 만드신다고 하셨는데 그것을 통제하는 방법은 있습니다....
    • 안치봉
      1999.06.08 00:35
      세림 께서 말씀하시기를... > 간단한 웹서버 응용을 테스트하고 있는데 > 처음에는 익스플러어에서 실행...
    • 이정욱
      1999.02.06 01:57
      메세지가 발생하면서 전달이 되지는 않을것 같다는것이 제 의견입니다. 그냥 IE는 ActiveX콘트롤로써 그부...
    • 성관
    • 1999.06.07 19:04
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김경호
      1999.02.06 01:14
      안녕하세요. A양식과 B양식을 하나로 합쳐서 미리보기 기능으로 만들려고 합니다. A양식은 1페이지에 B양...
    • 델사랑
      1999.06.07 19:45
      성관 께서 말씀하시기를... > 안녕하세요.. > 날씨가 무척이나 무덥지요,,,,, > 무더운 여름을 잘 보내...
    • 김재억
    • 1999.02.05 20:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.02.08 06:04
      E-Mail을 확인해 보세요. 김재억 wrote: > 안녕하세요? 김 재억입니다. > 제가 다니는 회사는 POD정기...
    • 박성훈
      1999.06.11 02:15
      조진희 께서 말씀하시기를... > 안녕들 하셨어요.. > 저희가 입력된 데이타 수정작업을 하려던 중에 dggr...
    • 초보
      1999.06.12 20:25
      박성훈 께서 말씀하시기를... > dbgrid를 선택하신 곳이 현재 레코드의 위치가 됩니다. 그러니까 사원테...
    • 강영구
    • 1999.02.05 19:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.02.08 06:01
      사용하시는 스케너의 Twain드라이버가 직접 아래작업들을 코맨드로 지원하지 않는다면 직접 스케너를 제어...
    • 전철호
      1999.06.07 20:01
      정성호 께서 말씀하시기를... > 안녕하세요.. 많은 도움을 받고 있는 신삥입니당... > 쩝 전 도와드릴 일...
    • 구민오
    • 1999.02.05 11:02
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김재휘
      1999.06.07 17:39
      DBGrid를 이용해서 테이블내에 레코드를 삽입하려하고 했습니다. 간단하다고 생각했죠.. Table1.Insert; ...
    • 이정욱
      1999.02.06 09:54
      인터넷 프로그래밍을 하시면서 유해정보차단장치를 만드신다고 하셨는데 그것을 통제하는 방법은 있습니다....
    • 이정욱
      1999.02.06 01:57
      메세지가 발생하면서 전달이 되지는 않을것 같다는것이 제 의견입니다. 그냥 IE는 ActiveX콘트롤로써 그부...
    • Hans
    • 1999.06.07 12:51
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 1999.02.05 04:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.02.05 06:58
      크리스탈 리포트(따로구입)는 물론 퀵리포트(델파이기본), 하이퍼 리포트, HTML리포트 등등 수도없이 많습...
    • 1999.02.05 04:14
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이영호
      1999.06.06 11:58
      인스톨 쉘드에서 여러개의 setup 화일들을 하나의 화일로 만들어서 실행시 자동인스톨이 되게 하려고 합...
    • 이정욱
      1999.02.05 06:58
      크리스탈 리포트(따로구입)는 물론 퀵리포트(델파이기본), 하이퍼 리포트, HTML리포트 등등 수도없이 많습...
    • 구민오
      1999.02.03 03:49
      텍스트 박스나 리치 텍스트 박스에 나타난 글 내용중에서 여러 검색어를 가지고 그 여러 검색어 중 하나라...
    • 류성호
      1999.06.07 20:11
      설치 프로그램을 만들어 주는 인스톨쉴드 프로그램은 여러가지가 있습니다. Windows용 설치프로그램 말고...
    • 이정욱
      1999.02.03 21:59
      검색을 하시는 루틴에서(물론 POS함수로 하시죠?) 두개의 검색문을 넣으시면 됩니다. 예를들어.. 그냥.....
    • 이정욱
      1999.06.06 04:19
      델파이 헬프에서 'Distributable Files'라는 색인으로 보세요. 이부분이 글씨가 작아서 잘 안보이니 인쇄...
    • 1999.06.05 23:45
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 박민주
      1999.02.02 19:08
      안녕하세요. 건전지 충방전 Test 시스템에 사용될 프로그램을 개발하려고 합니다. 가장 정밀할때의 타임...
    • 신호성
      1999.06.07 08:58
      희 께서 말씀하시기를... > 델파이에서 내장프로시저를 사용할때 한 묶음의 결과값을 얻고자 할때는 어떻...
    • 이정욱
      1999.02.03 21:47
      파워러브 델파이 97년 7월(5호)에 보시면 0.001초에 도전하자라는 것이 있습니다. 조금이나마 그것이 도움...
    • 구민오
    • 1999.02.03 03:49
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 황영일
      1999.06.05 20:13
      인스톨 프로그램을 만들어 배포해서 win95와 winnt에는 문제가 없었는데 win98에서 알리어스 language dri...
    • 이정욱
      1999.02.03 21:59
      검색을 하시는 루틴에서(물론 POS함수로 하시죠?) 두개의 검색문을 넣으시면 됩니다. 예를들어.. 그냥.....
    • 박민주
    • 1999.02.02 19:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.02.03 21:47
      파워러브 델파이 97년 7월(5호)에 보시면 0.001초에 도전하자라는 것이 있습니다. 조금이나마 그것이 도움...
    • 이정욱
      1999.06.05 20:12
      무슨 말씀이신지...? 다시 정확히 질문 바랍니다. 이현신 께서 말씀하시기를... > 윈도우에서 특정 폴...
    • 이현신
      1999.06.05 22:30
      이정욱 께서 말씀하시기를... > 무슨 말씀이신지...? 다시 정확히 질문 바랍니다. 그러니깐 PC '내 컴...
    • 김태균
      1999.06.07 17:49
      이현신 께서 말씀하시기를... > 이정욱 께서 말씀하시기를... > > 무슨 말씀이신지...? 다시 정확히 질문...
    • 김성중
    • 1999.02.02 04:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.02.02 09:44
      음.. 여기 있습니다. 잘 사용하시구요... 자주 들러서 답변도 해주세요. 서로 돕구 살아야죠. unit S...
    • 한 재
    • 1999.06.05 17:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.06.07 20:11
      한 재 께서 말씀하시기를... > DBGrid에 Memo필드의 내용 출력하기 예제(아래의 소스)의 DatabaseName은 '...