Q&A

  • Grid에 색깔 넣어줄려는데요...
0   .........
1   .........
2   .........
2
3
3
4
4
4
5
5

그리드에 뿌려진 내용이 위와 같구요...
0 선택시 색깔설정하구요...
2 선택시 2로 써진 두 레코드 모두 같은 색으로 설정돼게 하고싶은데..
이게 가능한가여?
아시는분 방법좀 ㅠ.ㅠ


DBGrid1DrawColumnCell 이벤트에서
4  COMMENTS
  • Profile
    연기훈 2004.02.25 18:27
    DBGrid에서 값을 비교하여 뿌려질려면...

    DB내용을 비교해야 합니다.

    전에 제가 했던 프로젝트에서 비슷한 내용의 소스입니다.

    참고 하세요...

      if qry_BODD.FieldByName('ANCPT').AsFloat < 0 then
        if (Sender as TDBGrid).Focused and (State = [gdSelected]) then begin
           (Sender as TDBGrid).Canvas.Brush.Color := clFuchsia;

        end else begin
           (Sender as TDBGrid).Canvas.Brush.Color := clYellow;
           (Sender as TDBGrid).Canvas.Font.Color  := clBlack;
        end;

      (Sender as TDBGrid).DefaultDrawColumnCell(Rect,DataCol,Column,State);

  • Profile
    레이디메이앙 2004.02.25 20:31
    저도 님처럼 한 레코드 선택시 색깔 설정은 했는데요...
    아래글에도 썼는데여 code = 2인 레코드를 선택하면
    code=2인 경우의 모든 레코드의 색깔을 같게 설정할려고 하거든요...
    ㅡ.ㅜ
    2를 선택하면 2인경우의 레코드 2개가 같은 색깔을 가지구요..
    4를 선택시 4인 경우의 레코드 3개를 동시에 같은 색깔로 변경할려구요...


  • Profile
    연기훈 2004.02.25 23:27
    제가 테스트로 짜본건데.. 도움이 될런지..

    그럼 즐프하세요

    var
      Form1: TForm1;
      test : integer;

    implementation

    {$R *.dfm}

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
       (Sender as TDBGrid).Canvas.Font.Color  := clBlack;

       if qry.FieldByName('test').AsInteger = test then begin
          (Sender as TDBGrid).Canvas.Brush.Color := clYellow;
       end else begin
          (Sender as TDBGrid).Canvas.Brush.Color := clWhite;
       end;

      (Sender as TDBGrid).DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end;

    procedure TForm1.FormShow(Sender: TObject);
    begin
      test := -1;
    end;

    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
       test := qry['test'];
       DBGrid1.Refresh;
    end;

  • Profile
    연기훈 2004.02.25 23:30
    option 에서 dgediting은 false로

    dgrowselet 는 true로 하고 했습니다.