Q&A

  • StringGrid에서 각 행에 font변경.......
안녕하세요.

StringGrid에서 각행에 글꼴과 스타일, 각 행의 색깔을 변경하려고 하는데 잘

되지 않아 이렇게 도음을 청합니다.



각 행에 변경을 한후 다시 원상태(Property에서 준 글꼴)로 되돌아 옵니다.



아시는 분은 많이많이 부탁드립니다.

안녕히.........



1  COMMENTS
  • Profile
    박혁 1999.08.13 00:55
    이덕희 께서 말씀하시기를...

    > 안녕하세요.

    > StringGrid에서 각행에 글꼴과 스타일, 각 행의 색깔을 변경하려고 하는데 잘

    > 되지 않아 이렇게 도음을 청합니다.

    >

    > 각 행에 변경을 한후 다시 원상태(Property에서 준 글꼴)로 되돌아 옵니다.

    >

    > 아시는 분은 많이많이 부탁드립니다.

    > 안녕히.........

    >



    아마 이렇게 하면 폰트가 변경되지 않고, 색 설정도 잘 될것 같습니다.

    (폰트색 변경후 약간의 잔상이 뒤에 나타납니다)

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

    Rect: TRect; State: TGridDrawState);

    var

    n,m:integer;

    begin

    n:=StringGrid1.RowCount;//행의 현재 개수

    m:=StringGrid1.ColCount; //열의 현재 개수

    //특정 셀의 폰트변경

    if(ARow=1)then

    with (Sender as TStringGrid).Canvas do begin

    StringGrid1.Canvas.Font.Color:=$000000aa;

    TextOut(Rect.left,Rect.top,StringGrid1.Cells[ACol,ARow]) ;

    end;

    if(ACol=m-1)then

    with (Sender as TStringGrid).Canvas do begin

    StringGrid1.Canvas.Font.Color:=clGreen;

    TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol,ARow]) ;

    end;

    if(ACol=m-2)then

    with (Sender as TStringGrid).Canvas do begin

    StringGrid1.Canvas.Font.Color:=$00FF0000;

    TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol,ARow]) ;

    end;

    //특정셀의 색 변경

    if ((ARow =1 ) and ((ACol = m-2)or(Acol=m-1))) then

    with (Sender as TStringGrid).Canvas do begin

    Brush.Color := clLtGray;

    FillRect(Rect) ;

    TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol,ARow]) ;

    end;

    end;