Q&A

  • StringGrid에서 조건에 맞을 때만 한 셀의 Color 를 변경하는 것이 궁금합니다.
안녕하세요

추운 겨울이 시작되는 데 건강조심하세요.

저는 DB에서 자료를 가져와 StringGrid에 뿌려주는 프로그램을 하고 있는데

여러가지의 조건에 따라 조건에 맡는 셀이 고유한 색(또는 그속에 들어가는 글자의 색)을 나타내고자 합니다.

onDrawCell 을 이용하는 방법은 많이 들었는데 onDrawCell 이 조건에 맞으면

호출되어 그 한 셀만 다른 특성을 나타낼 수 있는지 onDrawCell을 호출한다면

어떡해 호출하는 지, 아니면 사용자정의함수를

따로 만들어 처리를 해야 하는 지 궁금합니다.

그럼 고수님들의 많은 관심바라며 오늘도 건강하시길.......

1  COMMENTS
  • Profile
    조규춘 2000.11.22 07:25
    맨땅맨 wrote:

    > 안녕하세요

    > 추운 겨울이 시작되는 데 건강조심하세요.

    > 저는 DB에서 자료를 가져와 StringGrid에 뿌려주는 프로그램을 하고 있는데

    > 여러가지의 조건에 따라 조건에 맡는 셀이 고유한 색(또는 그속에 들어가는 글자의 색)을 나타내고자 합니다.

    > onDrawCell 을 이용하는 방법은 많이 들었는데 onDrawCell 이 조건에 맞으면

    > 호출되어 그 한 셀만 다른 특성을 나타낼 수 있는지 onDrawCell을 호출한다면

    > 어떡해 호출하는 지, 아니면 사용자정의함수를

    > 따로 만들어 처리를 해야 하는 지 궁금합니다.

    > 그럼 고수님들의 많은 관심바라며 오늘도 건강하시길.......



    델세상(http://www.freechal.com/delphiworld)의 조규춘입니다.



    예를 들어 2가지만 하겠습니다.



    음.. 그 셀의 값이 10일때는 노란색, 20일때는 파란색 이렇게 만들어 보왔습니다.



    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;

    Rect: TRect; State: TGridDrawState);

    begin

    if (Arow <> 0) and (ACol <> 0) then // 고정 행 및 고정 칼럼은 선 그리기 제외

    begin

    if StringGrid1.Cells[Acol, Arow] = '10' then

    with StringGrid1.Canvas do

    begin

    Brush.Color := clyellow;

    FillRect(Rect) ;

    TextRect(Rect, 3, 3, '10');

    end

    else if StringGrid1.Cells[ACol, Arow] = '20' then

    with StringGrid1.Canvas do

    begin

    Brush.Color := clblue;

    FillRect(Rect) ;

    end

    end;

    end;