C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 FAQ
C++Builder Programming FAQ
[40] DBGrid에 메모 필드를 (MEMO) 대신 실제 값으로 표시하려면
박지훈.임프 [cbuilder] 19222 읽음    2001-11-14 02:35
궁금이 님이 쓰신 글 :
: 냠.. 오라클에 Table에 VARCHAR2(254)로 컬럼을 잡아놓은 게 있습니다.
:
: 헌데 이를 쿼리하여 DBGrid에 뿌릴때 사이즈가 커서 데이타를 못뿌리고
:
: (MEMO)라고 표시되더군요... ㅡㅡ;
:
: 혹시나 저 사이즈를 조절이 가능한지요?
:
: 아님 어쩔수 없는것인지요?
:
: 혹시나 방법이 있다면...
:
: 알려주세요..~~~^^


임프랍니다.

오라클의 VARCHAR2 필드는 빌더나 델파이의 BLOB 필드에 해당합니다.
TDBGrid는 기본적으로 BLOB 필드는 내용을 그대로 표시하지 않고 (MEMO) 라고 표시해줍니다.
(크기가 너무 커서 그렇게 나타나는 것이 아니라 크기와 관계없이 무조건 (MEMO) 라고 표시합니다.)

물론 디비그리드에 메모 필드를 강제로 표시하게 할 수도 있습니다. 다음과 같이 해보세요.
먼저, 쿼리 컴퍼넌트의 OnAfterOpen 이벤트의 핸들러를 다음과 같이 작성하세요.

void __fastcall TForm1::ADOQuery1AfterOpen(TDataSet *DataSet)
{
     for(int i=0; i<DataSet->FieldCount; i++)
     {
           TBlobField *BlobField = dynamic_cast<TBlobField *>(DataSet->Fields->Fields[i]);
           if(BlobField != NULL)
                 BlobField->OnGetText = BlobFieldGetText;
     }
}

그리고, 다음과 같은 함수를 폼 클래스에 추가합니다.

void __fastcall TForm1::BlobFieldGetText(TField* Sender, AnsiString &Text, bool DisplayText)
{
     Text = Sender->AsString;
}

이렇게 하면 디비그리드에 메모 필드의 값이 나타나게 될 겁니다.
그럼 이만...


+ -

관련 글 리스트
40 DBGrid에 메모 필드를 (MEMO) 대신 실제 값으로 표시하려면 박지훈.임프 19222 2001/11/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.