Q&A

  • 스트링그리드의 셀 안에서 Lineskip...
안녕하세요?
음... 스트링그리드의 Cell 안에서 Lineskip을 하려면 어떻게 해야 하죠?
쉬울것 같았는데 의외로 찾기가 어렵네요.
해보신 분께서 도와주시면 좋을 것 같습니다.
그럼 많은 고수분들의 도움 바랍니다.
1  COMMENTS
  • Profile
    최석기 2002.04.09 21:47
    Lineskip라는게 Wordwrap를 말씀하시는건지요??

    한줄이 길때 여러줄로 표현하는 거라면 다음을 참조하세여..

    // Memo나 RichEdit의 WordWrap은 단어 단위로 분리하여 복수행을 만들지만
    // StringGrid의 경우는 이 기능이 없고 직접 onDrawCell 에서 그려야 하는데
    // WordWrap처럼 단어 단위로 분리하면 오른쪽에 공백이 많이 남게됩니다
    // 아래 코드는 한글이 단어 단위로 분리되지 않고 글자 단위로 분리하는
    // 예제입니다 - (DefaultDrawing = False 입니다)

    procedure TMainForm.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
    Rect: TRect; State: TGridDrawState);
    begin
    if (Col = 1) or (Col = 2) then
    begin
       StringGrid1.Canvas.Font := StringGrid1.Font; // 지정하지 않으면 System 폰트가 됨
       Rect.Left := Rect.Left+1;
       Rect.Top  := Rect.Top+1;
       DrawText(StringGrid1.Canvas.Handle,
                PChar(StringGrid1.Cells[Col,Row]), // 출력할 문자열
                -1, // 문자열의 길이(-1로 지정하면 자동 계산)
                Rect,
                DT_WORDBREAK);
    end
    else
    begin
       StringGrid1.Canvas.FillRect(Rect);
       StringGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top+2, StringGrid1.Cells[Col, Row]);
    end;
    end;