Q&A

  • DB그리드의 OnDrawDataCell이벤트시..
DB그리드에서 각 레코드별 색을 다르게 하고 싶은데

OnDrawDAtaCell이벤트호출이 안되네여

그래서



dbgrid1.columns.state := csDefault



로 해주었는데 이벤트는 호출하지만 색은 변하지 않고

더욱 문제점은 Grid가 Default가 되어선 안되는데..

여하튼. 현재의 그리드 상태에서 색을 넣는건 무리인가요?



procedure TF_Order01.DBGrid4DrawDataCell(Sender: TObject;

const Rect: TRect; Field: TField; State: TGridDrawState);

begin

If MemDivision.Text = '1' then

(Sender as TDbGrid).canvas.Brush.Color := clYellow

else (Sender as TDbGrid).canvas.Brush.Color := $00ECFFFD;

end;





3  COMMENTS
  • Profile
    버섯 2001.12.07 23:10
    델초보 wrote:

    > DB그리드에서 각 레코드별 색을 다르게 하고 싶은데

    > OnDrawDAtaCell이벤트호출이 안되네여

    > 그래서

    >

    > dbgrid1.columns.state := csDefault

    >

    > 로 해주었는데 이벤트는 호출하지만 색은 변하지 않고

    > 더욱 문제점은 Grid가 Default가 되어선 안되는데..

    > 여하튼. 현재의 그리드 상태에서 색을 넣는건 무리인가요?

    >

    > procedure TF_Order01.DBGrid4DrawDataCell(Sender: TObject;

    > const Rect: TRect; Field: TField; State: TGridDrawState);

    > begin

    > If MemDivision.Text = '1' then

    > (Sender as TDbGrid).canvas.Brush.Color := clYellow

    > else (Sender as TDbGrid).canvas.Brush.Color := $00ECFFFD;

    > end;

    >

    >



    OnDrawDataCell 은 그리드에 Column을 설정해주면 호출이 안되고 대신에



    OnDeawColumnCell 이 호출됩니다.



    그 이벤트를 이용하시면 됩니다....



    아니면 런타임때 컬럼을 설정해주면 온드로우데이터셀을 쓸수가 있죠.. ^^



  • Profile
    델초보 2001.12.08 00:21


    버섯님말씀대루 OnDeawColumnCell 에서 해주니깐 레코드색은 나오는데

    글씨가 안보이는 이유는 혹시 아시는지요..

    한줄씩 실행해보면 레코드색만 변경시키는 군요..

    DBGrid에 데이터가 안보이면 색은 변경안시키느니 못하네요.흑흑.

    여하튼.. 데이터가 안보이는 이유를 아시는 분 좀 가르쳐 주세요.





    procedure TF_Order01.DBGrid1DrawColumnCell(Sender: TObject;

    const Rect: TRect; DataCol: Integer; Column: TColumn;

    State: TGridDrawState);

    var

    FieldValue : String;

    begin

    Fieldvalue := Query1column1.Text;

    if (FieldValue = '1') or (FieldValue ='2') then begin

    (Sender as TDbGrid).canvas.brush.Color :=$00FFFAEE;

    (Sender as TDbGrid).canvas.font.Color := clblack;

    (Sender as TDbGrid).canvas.FillRect(Rect) ;

    end;

    end;









    버섯 wrote:

    > 델초보 wrote:

    > > DB그리드에서 각 레코드별 색을 다르게 하고 싶은데

    > > OnDrawDAtaCell이벤트호출이 안되네여

    > > 그래서

    > >

    > > dbgrid1.columns.state := csDefault

    > >

    > > 로 해주었는데 이벤트는 호출하지만 색은 변하지 않고

    > > 더욱 문제점은 Grid가 Default가 되어선 안되는데..

    > > 여하튼. 현재의 그리드 상태에서 색을 넣는건 무리인가요?

    > >

    > > procedure TF_Order01.DBGrid4DrawDataCell(Sender: TObject;

    > > const Rect: TRect; Field: TField; State: TGridDrawState);

    > > begin

    > > If MemDivision.Text = '1' then

    > > (Sender as TDbGrid).canvas.Brush.Color := clYellow

    > > else (Sender as TDbGrid).canvas.Brush.Color := $00ECFFFD;

    > > end;

    > >

    > >

    >

    > OnDrawDataCell 은 그리드에 Column을 설정해주면 호출이 안되고 대신에

    >

    > OnDeawColumnCell 이 호출됩니다.

    >

    > 그 이벤트를 이용하시면 됩니다....

    >

    > 아니면 런타임때 컬럼을 설정해주면 온드로우데이터셀을 쓸수가 있죠.. ^^

    >

  • Profile
    지나가다가 2001.12.08 17:09
    지나가다가....



    procedure TF_Order01.DBGrid1DrawColumnCell(Sender: TObject;

    const Rect: TRect; DataCol: Integer; Column: TColumn;

    State: TGridDrawState);

    var

    FieldValue : String;

    begin

    Fieldvalue := Query1column1.Text;

    if (FieldValue = '1') or (FieldValue ='2') then begin

    (Sender as TDbGrid).canvas.brush.Color :=$00FFFAEE;

    (Sender as TDbGrid).canvas.font.Color := clblack;

    (Sender as TDbGrid).canvas.FillRect(Rect) ;

    DefaultDrawColumnCell(Rect, DataCol, Column, State); //이걸 한 줄 추가해

    //보세요...

    end;

    end;









    델초보 wrote:

    >

    > 버섯님말씀대루 OnDeawColumnCell 에서 해주니깐 레코드색은 나오는데

    > 글씨가 안보이는 이유는 혹시 아시는지요..

    > 한줄씩 실행해보면 레코드색만 변경시키는 군요..

    > DBGrid에 데이터가 안보이면 색은 변경안시키느니 못하네요.흑흑.

    > 여하튼.. 데이터가 안보이는 이유를 아시는 분 좀 가르쳐 주세요.

    >

    >

    > procedure TF_Order01.DBGrid1DrawColumnCell(Sender: TObject;

    > const Rect: TRect; DataCol: Integer; Column: TColumn;

    > State: TGridDrawState);

    > var

    > FieldValue : String;

    > begin

    > Fieldvalue := Query1column1.Text;

    > if (FieldValue = '1') or (FieldValue ='2') then begin

    > (Sender as TDbGrid).canvas.brush.Color :=$00FFFAEE;

    > (Sender as TDbGrid).canvas.font.Color := clblack;

    > (Sender as TDbGrid).canvas.FillRect(Rect) ;

    > end;

    > end;

    >

    >