100分求救,不够同我说!

liyong00512 2002-12-18 07:59:30
在SQL中的BIT类型在C++Builder中的DBGrid的字段显示为true或false;但是我想要把true显示为一个钩;false显示为空。请问如何做。
...全文
19 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyong00512 2002-12-19
  • 打赏
  • 举报
回复
现在问题已经解决,非常感谢Libran() 和caiyongqiang(蔡永强) 的帮助与支持。谢谢!
Libran 2002-12-18
  • 打赏
  • 举报
回复
给你个例子:
http://61.132.74.87/libran/CheckDBGrid.rar
用的SQL自带的pubs库,authors表,最后一个contract字段是bit类型的
caiyongqiang 2002-12-18
  • 打赏
  • 举报
回复
tagRECT r = Rect ;
if (Column->Field->FieldName == "abc")
{
DBGrid1->Canvas->FillRect(Rect);
if (Column->Field->AsBoolean)
DrawFrameControl(DBGrid1->Canvas->Handle, &r,
DFC_BUTTON, DFCS_BUTTONCHECK+DFCS_CHECKED);
else
DrawFrameControl(DBGrid1->Canvas->Handle, &r,
DFC_BUTTON, DFCS_BUTTONCHECK);
}
liyong00512 2002-12-18
  • 打赏
  • 举报
回复
哎!
还是不行
你能帮我解决我再给你100分。
我现在好急用
谢谢!
Libran 2002-12-18
  • 打赏
  • 举报
回复
DBGrid1->Canvas->FillRect(Rect);
这行不能丢啊~~~
liyong00512 2002-12-18
  • 打赏
  • 举报
回复
TO Libran()
现在能通过了
但是没有达到预期的效果
那里还是显示true

Libran 2002-12-18
  • 打赏
  • 举报
回复
Recttmp是自己定义的变量,用来给DrawFrameControl做参数,声明刚忘了贴了
Libran 2002-12-18
  • 打赏
  • 举报
回复
用最后一个回复的代码啊
liyong00512 2002-12-18
  • 打赏
  • 举报
回复
TO Libran()
我把你的代码修改如下:
if (Column->Field->FieldName == "服务")
{
DBGrid3->Canvas->FillRect(Rect);
if (Column->Field->AsBoolean)
DrawFrameControl(DBGrid3->Canvas->Handle, Recttmp,
DFC_BUTTON, DFCS_BUTTONCHECK+DFCS_CHECKED);
else
DrawFrameControl(DBGrid3->Canvas->Handle, Recttmp,
DFC_BUTTON, DFCS_BUTTONCHECK);
}

但是它还有一个错误:
[C++ Error] jcsz.cpp(309): E2451 Undefined symbol 'Recttmp'
请问是什么问题?????
谢谢!!!!!!!!!!!!!
googoler 2002-12-18
  • 打赏
  • 举报
回复
不如这样!
void __fastcall TfmSOAudiList::cdsSOAudiCHECKEDGetText(TField *Sender,
AnsiString &Text, bool DisplayText)
{
if(cdsSOAudi->RecordCount>0)
{
if(cdsSOAudi->FieldByName("Checked")->AsInteger==1)
Text="√";
else
Text="";
}
}
//---------------------------------------------------------------------------
Libran 2002-12-18
  • 打赏
  • 举报
回复
不好意思,还得更正一下,这样就对了:
if (Column->Field->FieldName == "test2")
{
DBGrid1->Canvas->FillRect(Rect);
TRect Recttmp = Rect;
if (Column->Field->AsBoolean)
DrawFrameControl(DBGrid1->Canvas->Handle, &Recttmp,
DFC_BUTTON, DFCS_BUTTONCHECK+DFCS_CHECKED);
else
DrawFrameControl(DBGrid1->Canvas->Handle, &Recttmp,
DFC_BUTTON, DFCS_BUTTONCHECK);
}
Libran 2002-12-18
  • 打赏
  • 举报
回复
更正&补充:
时间==>事件
在DBGrid1的OnDrawColumnCell事件里写代码:
if (Column->Field->FieldName == "BIT类型的字段名")
{
DBGrid1->Canvas->FillRect(Rect);
if (Column->Field->AsBoolearn)
DrawFrameControl(DBGrid1->Canvas->Handle, Rect,
DFC_BUTTON, DFCS_BUTTONCHECK+DFCS_CHECKED);
else DrawFrameControl(DBGrid1->Canvas->Handle, Rect,
DFC_BUTTON, DFCS_BUTTONCHECK);
}

sjd163 2002-12-18
  • 打赏
  • 举报
回复
up
Libran 2002-12-18
  • 打赏
  • 举报
回复
在DBGrid的OnDrawColumnCell时间里写代码:
if (Column->Field->FieldName == "BIT类型的字段名")
{
if (Column->Field->AsBoolearn)
DrawFrameControl(DBGrid1->Canvas->Handle, Recttmp, DFC_BUTTON, DFCS_BUTTONCHECK+DFCS_CHECKED);
else DrawFrameControl(DBGrid1->Canvas->Handle, Recttmp, DFC_BUTTON, DFCS_BUTTONCHECK);
}
googoler 2002-12-18
  • 打赏
  • 举报
回复
你可以在TDataSet上Add All Field!
然后在TField的OnGetText事件中写Text=""钩或叉!
invalid 2002-12-18
  • 打赏
  • 举报
回复
钩可以用V来代替吧.(换个宽一点的字体)

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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