在数据表中有一个逻辑型字段,如何使它在Dbgrid1上以复选框形式出现?如何使复选框的值与数据表中的逻辑型字段值对应起来?

解决方案 »

  1.   

    用DXDBGRID
    可以实现checkbox,lookup,treeview的功能
      

  2.   

    也可以通过DBGRID的单元重绘来解决,看一下昨天的论坛
    有DBGRID的单元重绘的详细编码。
      

  3.   

    这是我的一个程序:
    C++Builder 的,与Delphi原理一样
    void __fastcall TW_MM_P_Receive::dbgIncomeDrawColumnCell(TObject *Sender,
          const TRect &Rect, int DataCol, TColumn *Column,
          TGridDrawState State)
    {
        int iLeft = 0;
        if (Column->FieldName  == "Checked")
        {
            iLeft =(Rect.Right-Rect.Left-10)/2 + 1/2;        dbgIncome->Canvas->Brush->Color =clWhite;    //去掉阴影
            dbgIncome->Canvas->FillRect(Rect);        dbgIncome->Canvas->Pen->Color =clBlue;        //
            dbgIncome->Canvas->Pen->Width =2;        dbgIncome->Canvas->MoveTo(Rect.Left+iLeft,Rect.Top+3);
            dbgIncome->Canvas->LineTo(Rect.Left+iLeft+10,Rect.Top+3);
            dbgIncome->Canvas->LineTo(Rect.Left+iLeft+10,Rect.Top+13);
            dbgIncome->Canvas->LineTo(Rect.Left+iLeft,Rect.Top+13);
            dbgIncome->Canvas->LineTo(Rect.Left+iLeft,Rect.Top+2);        if (adoqIncome->FieldByName("Checked")->AsString == "1")
            {
                dbgIncome->Canvas->MoveTo(Rect.Left+iLeft,Rect.Top+6);
                dbgIncome->Canvas->LineTo(Rect.Left+iLeft+4,Rect.Top+11);
                dbgIncome->Canvas->LineTo(Rect.Left+iLeft+12,Rect.Top+1);
            }
        }
    }
    //---------------------------------------------------------------------------