在TDBGrid中绘制一个多选框(CheckBox)
来源:互联网 发布:qq机器人 php 编辑:程序博客网 时间:2024/05/18 02:03
可在TDBGrid的OnDrawColumnCell和OnDrawDataCell事件中编写
void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State){ if (Column->FieldName == "Visible") { TDBGrid *grid = dynamic_cast<TDBGrid *>(Sender); unsigned int uState = DFCS_BUTTONCHECK; if (Column->Field->AsBoolean) uState += DFCS_CHECKED; TRect FrameRect = TRect(Rect.left+2,Rect.top+2,Rect.right-2,Rect.bottom-2); //也可以直接=Rect,不过画出来的单选框有点偏大 DrawFrameControl(grid->Canvas->Handle,&FrameRect,DFC_BUTTON,uState); }}(在OnDrawDataCell中需要更改Column参数为Field)
说明:这仅仅是在TDBGrid中绘制一个CheckBox形状,这个CheckBox并不会响应鼠标点击事件,但会根据字段值改变选择状态,所以还必须自己编写事件改变字段值,可以在OnCellClick事件中改变字段值,比如:
void __fastcall TForm1::DBGrid1CellClick(TColumn *Column){ TDBGrid *grid = dynamic_cast<TDBGrid *>(Column->Grid); if (Column->FieldName == "Visible") { Column->Field->DataSet->Edit(); Column->Field->AsBoolean = !Column->Field->AsBoolean; Column->Field->DataSet->Post(); }}
同时,为了不在Cell内显示字段本身的值(True或False),也就是不管什么值都显示空白,必须这样
((TBooleanField *)Column->Field)->DisplayValues=";";
也可以在设计时更改(ADOTable的Fields Editor中),是TBooleanField字段才会有DisplayValues属性,如果你这个字段不是Boolean型,这样的转换可能会有错误。
另外,这和其他的绘制功能不太一样(比如更改字体颜色),一定不能在后面加上DefaultDrawColumnCell或DefaultDrawDataCell,要不然就白画啦,可以加在前面。
- 在TDBGrid中绘制一个多选框(CheckBox)
- Doevents 在 Tdbgrid 中的一个妙用
- 通过绘制在datagridview控件列头添加一个checkbox控件
- 通过绘制在datagridview控件列头添加一个checkbox控件
- 在TDBGrid控件中为作修改过的记录进行标识!
- 在StringGrid中每行添加一个选择框(checkbox)
- delphi中给TDBGrid上颜色
- 绘制一个坦克在控制台
- 在DBGrid中加入Checkbox
- 在editorgrid中关于checkbox
- 在wpf中绑定checkbox
- 在ireport中使用checkbox
- 在D3D中绘制一个三角形的一个完整过程(学习3D游戏笔记一)
- shader中绘制一个心
- Android 如何在一个Activity中合理地显示多种类型的checkBox
- checkBox在js判断只能选择一个
- 在Android中绘制曲线图
- 在面板中绘制图形
- VMProtect V1.24
- 如果你真要学TORQUE,花$100值! (It's worth buying your own Torque Engine)
- 业务流程的明确
- 源码的价值与开发者的价值(完结篇)——CSDN外包实践(16)
- 为了目标奋斗
- 在TDBGrid中绘制一个多选框(CheckBox)
- VB开发ASP组件经典事例[一]
- why Linux ?
- VB开发ASP组件经典事例[二]
- VB开发ASP组件经典事例[三]
- 评论: 网页浏览速度提高切实可行的七个方法
- 《COM原理及应用》学习笔记之第八章
- 《COM原理及应用》学习笔记之第九章
- 关于进程wdfmgr.exe