在DBGridEh控件中自定义一列,属性设置成checkboxes,但是运行的时候是灰色的不可选的,怎么回事啊!?

windtree 2004-08-09 08:58:36
我在DBGridEh中自定义了一列,属性是CheckBoxes,功能是运行时通过Checkboxes的选中和被选中来确定这行记录是否被操作,但是在运行时这列不能被单击。
我首先是在ClientDataSet组件中添加了一个Boolean类型的字段,字段种类为fkCalculated,然后在DBGridEh中引用了这个字段,运行时这列的CheckBoxes默认全被选中,不能单击操作Checkboxes,请问我如何在DBGridEh中实现这个用单选框操作来确定是否处理这行记录的功能呢?
...全文
559 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghchen 2004-08-19
  • 打赏
  • 举报
回复
up
xiaocuo_zrf 2004-08-18
  • 打赏
  • 举报
回复
对于Boolean型字段值在dbgrideh组件中自动显示为检查框。通常情况下我们需将非Boolean型字段值也此外观显示,如性别字段为字符型,字段值为“男性”时为选中,“女性”时为未选中。需要在keylist编辑器中设置实际存储数据值,第一行为选中时的值“1”,第二行为未选中的值“0”,第三行为其它值“2”,支持三态显示
qizhanfeng 2004-08-16
  • 打赏
  • 举报
回复
建议你在库里增加一个boolean类型的字段,而不是数据集
这样可以随意操纵checkbox
windtree 2004-08-16
  • 打赏
  • 举报
回复
up
junqicsdn 2004-08-12
  • 打赏
  • 举报
回复
我也遇到同样的问题,我用的是dxgrid,但是没有在ClientDataSet中新增字段,而是直接在dxgrid中添加一列,结果不能修改那一列,我的初衷和楼主是一样的啊!
顶!!!
windtree 2004-08-12
  • 打赏
  • 举报
回复
to liuhelin(鹤林)
你说得那个事件在哪啊?我怎么找不到
missj 2004-08-12
  • 打赏
  • 举报
回复
ff
liuhelin 2004-08-12
  • 打赏
  • 举报
回复
偶第一个贴就告诉你原因了
祝你问到明年
windtree 2004-08-12
  • 打赏
  • 举报
回复
现在是这样的情况:我在ClientDataSet数据组件中自定义了一个字段,类型是boolean,在DBGridEh中将这个字段设置成CheckBoxes,但在运行是这列默认的是被选中的状态,并且为灰色不可操作的状态,这个是什么问题呢?
windtree 2004-08-11
  • 打赏
  • 举报
回复
请问有人知道怎么解决吗?
pokemonFK 2004-08-11
  • 打赏
  • 举报
回复
up
lth1025 2004-08-11
  • 打赏
  • 举报
回复
DBGridEh1.Columns[?].Alignment:=taCenter;
并将你那个字段的Alignment属性设为taCenter。
lth1025 2004-08-11
  • 打赏
  • 举报
回复
procedure TFXJLL_PZCF.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
var
s: string;
df:UINT;
r: TRect;
const
// 这个整数值将按照布尔值返回,并送入数组
CtrlState : array[Boolean] of Integer = (DFCS_BUTTONCHECK,
DFCS_BUTTONCHECK or DFCS_CHECKED);
begin
if Query1.fieldbyname('XZ').value='1' then
begin
DBGridEh1.Canvas.Font.Color:=ClRed;
end;
DBGridEh1.DefaultDrawColumnCell(rect,datacol,column,state);
if Column.Field.FieldName ='XZ' then
begin
r := Rect;
DrawFrameControl(dbgrideh1.canvas.handle, r, DFC_BUTTON,CtrlState[Boolean(Column.Field.Value)]);
end;
if Column.Field.FieldName ='PZLB' then
begin
s := Column.DisplayText;
case Column.Alignment of
taLeftJustify: df := DT_LEFT;
taCenter: df := DT_CENTER;
taRightJustify: df := DT_RIGHT;
else df := DT_LEFT;
end;
r := Rect;
DrawTextEx(dbgrideh1.canvas.handle,PChar(s),Length(s),r,df,nil);
end;
end;
windtree 2004-08-10
  • 打赏
  • 举报
回复
up
rufer 2004-08-10
  • 打赏
  • 举报
回复
像这种问题,我一盖,“顶顶顶顶顶顶”
因为我——帮不上什么忙
windtree 2004-08-09
  • 打赏
  • 举报
回复
请问楼上的朋友能说得更详细些吗?
qiujsh 2004-08-09
  • 打赏
  • 举报
回复
在数据集中选择的时间,多选出一个字段来绑定到grid中
windtree 2004-08-09
  • 打赏
  • 举报
回复
请问这位朋友,你说的这个事件在哪里?另外如果在这个事件里赋值就可以在运行时单击选择麽?
liuhelin 2004-08-09
  • 打赏
  • 举报
回复
计算字段是只读的
只能在oncalculate事件里赋值

2,497

社区成员

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

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