• 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发

如何在DBGrid中添加checkbox?

bigpigtang 2004-12-23 12:01:44
偶用dbgrid读出表aaa中的id,name,state三项,但是我想state的值用checkbox表示,如果state=1,checkbox->checked = true;
同时,我也可以通过checkbox->check = true改变state的值/
老大们,偶该怎么做啊!!!!!!!!!
请指点一下偶这个后辈.....^-^
...全文
320 点赞 收藏 10
写回复
10 条回复
bigpigtang 2004年12月24日
state字段没有ongettext事件呵
回复 点赞
bigpigtang 2004年12月24日
解决
回复 点赞
Libran 2004年12月23日
Sorry,拷贝的代码,多了两行:

if (Column->Field->AsInteger == 1) //如果state是bit类型,改成->AsBoolean
uState += DFCS_CHECKED;
//下面这两行没用
//if (DataCol!=1 && DBGrid->Columns->Items[1]->Field->AsInteger == 0)
// uState += DFCS_INACTIVE;
TRect FrameRect = Rect;

另外,还要在state字段的OnGetText事件里写一行:
Text = "";
否则1/0还是会显示出来的
回复 点赞
Libran 2004年12月23日
在DBGrid的OnDrawColumnCell事件里写:
if (Column->FieldName == "state")
{
TDBGrid * DBGrid = dynamic_cast<TDBGrid *>(Sender);
unsigned int uState = DFCS_BUTTONCHECK;
if (Column->Field->AsInteger == 1) //如果state是bit类型,改成->AsBoolean
uState += DFCS_CHECKED;
if (DataCol!=1 && DBGrid->Columns->Items[1]->Field->AsInteger == 0)
uState += DFCS_INACTIVE;
TRect FrameRect = Rect;
DrawFrameControl(DBGrid->Canvas->Handle, &FrameRect, DFC_BUTTON, uState);
}
回复 点赞
ralpha08 2004年12月23日
得用第三方控件DBGridEh,不是bcb自带的DBGrid
回复 点赞
lihongxing2002 2004年12月23日
这个问题原来问过,你看看原来的帖子,应该 有
回复 点赞
bigpigtang 2004年12月23日
state 如果是bit型的话,用DBGridEh就直接显示的是CheckBox型的
显示的是true/false
我想显示的是一个checkbox,然后通过选择改变state的值。
回复 点赞
bigpigtang 2004年12月23日
先试试ralpha08的方法,
自己画?但是涉及到附值的问题啊。
回复 点赞
ssyfrank 2004年12月23日
可以自己画
回复 点赞
ralpha08 2004年12月23日
state 如果是bit型的话,用DBGridEh就直接显示的是CheckBox型的
回复 点赞
发动态
发帖子
C++ Builder
创建于2007-08-02

2563

社区成员

10.2w+

社区内容

C++ Builder相关内容讨论区
社区公告
暂无公告