Q&A

  • 지금 선택한 로우의 색을 노란색, 이전에 선택했던 로우의 색은 분홍색으로
안녕하십니까?



질문입니다 꼭 부탁드립니다.



DBGRID에서 이전에 선택한 로우와 지금 선택한 로우의 색을 틀리게 하고 싶습니다.

예를 들어서 지금 선택한 로우의 색을 노란색, 이전에 선택했던 로우의 색은 분홍색으로 말입니다.

그럼 부탁드립니다.

1  COMMENTS
  • Profile
    홍성락 2001.09.21 03:34
    김성진 wrote:

    > 안녕하십니까?

    >

    > 질문입니다 꼭 부탁드립니다.

    >

    > DBGRID에서 이전에 선택한 로우와 지금 선택한 로우의 색을 틀리게 하고 싶습니다.

    > 예를 들어서 지금 선택한 로우의 색을 노란색, 이전에 선택했던 로우의 색은 분홍색으로 말입니다.

    > 그럼 부탁드립니다.

    //////////////////////////////////////////////////////////////////////////

    아래처럼 해보시고, 좀 어설퍼서 다른방법에 참조해보세요.

    DBGRID의 Options에서 RowSelection과 MultiSelect를 선택한후에

    전역변수 CelRow : TGridCoord; 선언,

    그리고 아래 코딩, Ctrl키 누르면서 다중선택해보세요.

    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;

    Field: TField; State: TGridDrawState);

    begin



    with TDBGrid(Sender) do begin

    if (SelectedRows.CurrentRowSelected) then begin //현선택된줄만 색칠하기



    if CelRow.Y = MouseCoord(Rect.Left,Rect.Top).Y then

    Canvas.Brush.Color := clYellow

    else

    Canvas.Brush.Color := clFuchsia;



    Canvas.Font.Color := clBlack;

    Canvas.FillRect(Rect);

    //필드타입에 따라 다시쓰는 위치를 조정하세요. Field.DataType

    canvas.TextRect(Rect, Rect.Left, Rect.Top, Field.AsString);

    end;

    end;

    end;



    procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    begin

    CelRow := DBGrid1.MouseCoord(X, Y);

    DBGrid1.Refresh;

    end;