如何在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的值/
老大们,偶该怎么做啊!!!!!!!!!
请指点一下偶这个后辈.....^-^
...全文
356 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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型的

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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