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

C++빌더 Q&A
C++Builder Programming Q&A
[43482] Re:Re:Re:재질문..
박지훈.임프 [cbuilder] 1558 읽음    2006-01-31 04:51
보여주신 소스에서 Cell의 텍스트에 넣는 문자열을 보니, 내용중에 리턴키도 없고 공백(스페이스)가 하나도 없는 경우라고
하더라도 강제로 여러 줄로 나오게 하고 싶다는 뜻인가보군요. 그런 경우라면, DrawText() 함수의 마지막 인자에
DT_EDITCONTROL 옵션을 추가해주면 됩니다.

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
    StringGrid1->Canvas->FillRect(Rect);
    DrawText(StringGrid1->Canvas->Handle, StringGrid1->Cells[ACol][ARow].c_str(),
            StringGrid1->Cells[ACol][ARow].Length(), &Rect,
            DT_NOPREFIX|DT_WORDBREAK|DT_LEFT|DT_EDITCONTROL);
}

참, 그리고 로우의 높이가 충분히 크지 않으면 당연히 잘려서 보이지 않겠지요?
그런 경우에 자동으로 높이를 늘려주려면 역시 다른 질문에서 보여주신 소스처럼 코드를 추가해줘야 합니다.

그럼...


빌초 님이 쓰신 글 :
: 새해 복 많이 받으세요~
:
: 우선 답변 주셔서 감사드립니다. (__)
:
: 설 연휴 기간 동안에 제가 올렸던 델파이 소스 여기 저기 뒤지면서 C++ 빌더 소스로 고쳐서 해 봤는데
: 계속 1줄로 나오더라고요.
:
: 박지훈 님이 올려주신 걸로 고쳐도 계속 한 줄로 나오네요. ㅠㅠ
:
: void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
:             TRect &Rect, TGridDrawState State)
: {
:     StringGrid1->Canvas->FillRect(Rect);
:     DrawText(StringGrid1->Canvas->Handle, StringGrid1->Cells[ACol][ARow].c_str(),
:             StringGrid1->Cells[ACol][ARow].Length(), &Rect, DT_NOPREFIX|DT_WORDBREAK|DT_LEFT);
: }
:
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:     StringGrid1->Cells[0][1] = "abcdefghijklmnopqrstuvwxyz";
:     StringGrid1->Cells[0][2] = "abcdefghijklmnopqrstuvwxyz";
: }
:
: 이런 식으로 버튼 누르면 StringGrid1의 셀에 텍스트가 추가 되게 테스트 해 봤는데요.
:
: 계속 한 줄로 나오네요.
:
: 참고로
:
: StringGrid1는 FixedCols=0, FixedRows=0, ColCoun=1, DefaultColWidth=64입니다.
:
:
:
:
: 박지훈.임프 님이 쓰신 글 :
: : 다음과 같이 해주면 됩니다.
: :
: : void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
: :       int ARow, TRect &Rect, TGridDrawState State)
: : {
: :     StringGrid1->Canvas->FillRect(Rect);
: :     DrawText(StringGrid1->Canvas->Handle, StringGrid1->Cells[ACol][ARow].c_str(),
: :       StringGrid1->Cells[ACol][ARow].Length(), &Rect, DT_NOPREFIX|DT_NOPREFIX);
: : }
: :
: : 두번째 줄의 길이가 길어서 나뉘어져보일 텐데, 전체 두줄입니다.
: :
: : 위에 델파이 소스를 변환해달라고 하신 분도 같은 분이시죠?
: : 인용하신 소스는 라인 일부가 빠져있고요.
: : 또 마지막 줄에 로우의 높이를 강제로 조절하는 부분이 있던데, 그건 의도하시지 않은 결과일 거 같아서 빼버렸습니다.
: :
: : 그럼...
: :
: :
: : 빌초보 님이 쓰신 글 :
: : : Cell의 Width를 넘어가는 긴 문자열을 출력할 때 잘려서 출력 되는데요.
: : :
: : :  자동으로 여러 줄로 출력해 주려면 어떻게 해야 하나요?

+ -

관련 글 리스트
43475 TStringGrid의 Cell에 멀티라인으로 출력하는 방법 빌초보 1311 2006/01/27
43478     Re:TStringGrid의 Cell에 멀티라인으로 출력하는 방법 박지훈.임프 1996 2006/01/29
43479         Re:Re:재질문.. 빌초 969 2006/01/29
43482             Re:Re:Re:재질문.. 박지훈.임프 1558 2006/01/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.