|
보여주신 소스에서 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를 넘어가는 긴 문자열을 출력할 때 잘려서 출력 되는데요.
: : :
: : : 자동으로 여러 줄로 출력해 주려면 어떻게 해야 하나요?
|