Q&A

  • dbgrid의 select색깔 바꾸기
고수님들의 도움을 요청합니다......

dbgrid의 옵션에서 dgRowselect를 True로 하면 실행했을때 dbGrid를 클릭하면 한줄이 모두 선택되어지는데 이 선택되어 진 색깔이 디폴트로 Navy로 되어 있잖아요.. 그런데, 이 색깔을 다른 색으로 바꾸고 싶은데요... 바꾸는 방법을 가르쳐 주세요...소스도 함께 올려주시면 감솨하겠습니다....

4  COMMENTS
  • Profile
    홍성락 2001.07.25 06:31
    미르짱 wrote:

    > 고수님들의 도움을 요청합니다......

    > dbgrid의 옵션에서 dgRowselect를 True로 하면 실행했을때 dbGrid를 클릭하면 한줄이 모두 선택되어지는데 이 선택되어 진 색깔이 디폴트로 Navy로 되어 있잖아요.. 그런데, 이 색깔을 다른 색으로 바꾸고 싶은데요... 바꾸는 방법을 가르쳐 주세요...소스도 함께 올려주시면 감솨하겠습니다....

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

    디비그리드는 좀 신경쓰이네요 다중선택시하고, 맨앞 색이 안변해서

    아래것의 if문에 좀 복잡했습니다.

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

    Field: TField; State: TGridDrawState);

    begin

    with TDBGrid(Sender) do begin

    if ((State = [gdSelected, gdFocused])or(State = [gdSelected]))or

    (SelectedRows.CurrentRowSelected) then begin

    Canvas.Brush.Color := clRed;

    Canvas.Font.Color := clWhite;

    Canvas.FillRect(Rect);

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

    end;

    end;

    end;

  • Profile
    미르짱 2001.07.25 20:05
    홍성락님의 성의있는 답변에 먼저 감사드립니닫..

    그런데 님께서 올린 소스데로 해보았는데 색깔에 변화가 없었습니다..

    디비그리드의 이벤트에 님의 소스를 복상해서 쓰면 되지 않나요??

    괜찮으시다면 예제파일을 첨부해주시면..........감사,감사







    홍성락 wrote:

    > 미르짱 wrote:

    > > 고수님들의 도움을 요청합니다......

    > > dbgrid의 옵션에서 dgRowselect를 True로 하면 실행했을때 dbGrid를 클릭하면 한줄이 모두 선택되어지는데 이 선택되어 진 색깔이 디폴트로 Navy로 되어 있잖아요.. 그런데, 이 색깔을 다른 색으로 바꾸고 싶은데요... 바꾸는 방법을 가르쳐 주세요...소스도 함께 올려주시면 감솨하겠습니다....

    > //////////////////////////////////////////////

    > 디비그리드는 좀 신경쓰이네요 다중선택시하고, 맨앞 색이 안변해서

    > 아래것의 if문에 좀 복잡했습니다.

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

    > Field: TField; State: TGridDrawState);

    > begin

    > with TDBGrid(Sender) do begin

    > if ((State = [gdSelected, gdFocused])or(State = [gdSelected]))or

    > (SelectedRows.CurrentRowSelected) then begin

    > Canvas.Brush.Color := clRed;

    > Canvas.Font.Color := clWhite;

    > Canvas.FillRect(Rect);

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

    > end;

    > end;

    > end;

  • Profile
    홍성락 2001.07.25 20:44
    제것은 되는데요

    dbgrid의 옵션에서 dgRowselect를 True로 하고, 필요시 dgMultiSelect도 True로하고요.

    dbgrid의 OnDrawDataCell이벤트에 그대로 복사하시면됩니다.

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

    미르짱 wrote:

    > 홍성락님의 성의있는 답변에 먼저 감사드립니닫..

    > 그런데 님께서 올린 소스데로 해보았는데 색깔에 변화가 없었습니다..

    > 디비그리드의 이벤트에 님의 소스를 복상해서 쓰면 되지 않나요??

    > 괜찮으시다면 예제파일을 첨부해주시면..........감사,감사

    >

    >

    >

    > 홍성락 wrote:

    > > 미르짱 wrote:

    > > > 고수님들의 도움을 요청합니다......

    > > > dbgrid의 옵션에서 dgRowselect를 True로 하면 실행했을때 dbGrid를 클릭하면 한줄이 모두 선택되어지는데 이 선택되어 진 색깔이 디폴트로 Navy로 되어 있잖아요.. 그런데, 이 색깔을 다른 색으로 바꾸고 싶은데요... 바꾸는 방법을 가르쳐 주세요...소스도 함께 올려주시면 감솨하겠습니다....

    > > //////////////////////////////////////////////

    > > 디비그리드는 좀 신경쓰이네요 다중선택시하고, 맨앞 색이 안변해서

    > > 아래것의 if문에 좀 복잡했습니다.

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

    > > Field: TField; State: TGridDrawState);

    > > begin

    > > with TDBGrid(Sender) do begin

    > > if ((State = [gdSelected, gdFocused])or(State = [gdSelected]))or

    > > (SelectedRows.CurrentRowSelected) then begin

    > > Canvas.Brush.Color := clRed;

    > > Canvas.Font.Color := clWhite;

    > > Canvas.FillRect(Rect);

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

    > > end;

    > > end;

    > > end;

  • Profile
    홍성락 2001.07.25 05:33
    미르짱 wrote:

    > 고수님들의 도움을 요청합니다......

    > dbgrid의 옵션에서 dgRowselect를 True로 하면 실행했을때 dbGrid를 클릭하면 한줄이 모두 선택되어지는데 이 선택되어 진 색깔이 디폴트로 Navy로 되어 있잖아요.. 그런데, 이 색깔을 다른 색으로 바꾸고 싶은데요... 바꾸는 방법을 가르쳐 주세요...소스도 함께 올려주시면 감솨하겠습니다....

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

    사용해본것이 스트링그리드라서 참조해서 사용해보세요

    더 좋은 방법있으면 올려주세요.

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

    Rect: TRect; State: TGridDrawState);

    begin

    with TStringGrid(Sender) do begin

    if ((State = [gdSelected])or(Row=ARow))and(State <> [gdFixed]) then begin

    Canvas.Brush.Color := clRed;

    Canvas.FillRect(Rect);

    Canvas.Font.Color := clWhite;

    canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 3, cells[Acol, Arow]);

    end;

    end;

    end;