关于Dbgrid显示的问题?

chengxuejun1 2002-12-03 03:23:05

在数据表中有一个逻辑型字段,如何使它在Dbgrid1上以复选框形式出现?如何使复选框的值与数据表中的逻辑型字段值对应起来?
...全文
51 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyzsl 2002-12-03
  • 打赏
  • 举报
回复
这是我的一个程序:
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);
}
}
}
//---------------------------------------------------------------------------
zqdshsy 2002-12-03
  • 打赏
  • 举报
回复
也可以通过DBGRID的单元重绘来解决,看一下昨天的论坛
有DBGRID的单元重绘的详细编码。




zqdshsy 2002-12-03
  • 打赏
  • 举报
回复
用DXDBGRID
可以实现checkbox,lookup,treeview的功能

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧