假如DBGridEH裡邦定的數據如下:
客戶編號 貨單編號  01   02   03   04   05 
AT001    TMS1056AD  A-a  C-d  D-a  F-b  D-d
AT002    FEO1138DD  B-c  R-c  NULL NULL NULL
AT005    TTD1247FF  D-c  E-a  E-d  E-p  NULL
AT180    PEA1048    F-a  F-b  F-t  NULL NULL
AT192    MNW1289DD  E-b  NULL NULL NULL NULL
用DBGridEh顯示出來,如何讓AT001第一行記錄裡的C-d顯示為紅色,F-b顯示為綠色
             AT002第二行記錄裡的R-c顯示為藍色
.......等等
意思就是如何讓每一格顯示各種顏色?

解决方案 »

  1.   

    只能在画Grid的事件中,根据每个格内的值,画不同的颜色。
    没有用过DBGridEh,所以不知道具体的事件名称。
      

  2.   

    在DBGrid里使用OnDrawColumnCell可以实现!
    DBGridEH没有使用过!
      

  3.   

    DBGridEH是DBGrid的扩展,它继承了DBGrid基本上所有的属性、事件和方法等,并对DBGrid的功能作了增强而已,因此在DBGrid下能做的事情在DBGridEh下肯定也能做的
      

  4.   

    //---------------------------------------------------------------------------
    void __fastcall TForm1::DBGridEHDrawDataCell(TObject *Sender,
          const TRect &Rect, TField *Field, TGridDrawState State)
    {
      AnsiString theState = DBGridEH->DataSource->DataSet->FieldByName("STATE")->AsString
      if (theState == "0")
        for (int i = 0 ; i < DBGridEH->Columns->Count ; i++ )
          DBGridEH->Columns->Items[i]->Color = clBlue;
      else if (theState == "1")
        for (int i = 0 ; i < DBGridEH->Columns->Count ; i++ )
          DBGridEH->Columns->Items[i]->Font->Color = clPurple;
      else if (theState == "2")
        for (int i = 0 ; i < DBGridEH->Columns->Count ; i++ )
          DBGridEH->Columns->Items[i]->Font->Color = clRed;
      else if (theState == "9")
        for (int i = 0 ; i < DBGridEH->Columns->Count ; i++ )
          DBGridEH->Columns->Items[i]->Font->Color = clOlive;
      DBGridEH->Canvas->Brush->Color = clLime;
      DBGridEH->DefaultDrawDataCell(Rect, Field, State);
    }你自己修改一下吧,我没有很多时间