毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

delphi怎么在DBGrid的每条记录前出现一个CheckBox

更新时间:2013-1-14:  来源:毕业论文

delphi怎么在DBGrid的每条记录前出现一个CheckBox
比如,我通过一个查询选出了10条记录,但仍然有几条不符合要求,只要在符合条件的记录前画勾,就可以打印出所要的结果。
这个复选框可以说是临时的,它并不包含在数据库里。也就是说并不是再加一个字段,让它以CheckBox的形式显示。
谢谢!!

那在select 的时候定义一个列,select t.*,'Y' flag from table t

看有没 checkboxes 属性有了选择 true就行了。

可以换个控件,用TDBGridEh,建个计算字段。

办法有二:
1、使用现成控件,如TDBGridEh。
2、建议一个字段(字符型),选择了输入一个字符。再设置被选择的行为红色。

先在数据集中增加一个计算字段,再在DBGrid单元格中绑定一个checkBox控件,点击控件选中与否改变计算字段的值即可

并不太完美的答案-不支持xp样式
如果谁能让它支持了,那我认为就完美了。
其实添加一个DBCheckBox也挺好,需要时调出来让它盖住画的ChedkBox就行了。遗憾的是不能调整其大小,不能调到和画的那个一样大(当然,肯定有高手能做到)。
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
  CtrlState: array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
begin
  if Column.Field.DataType = ftboolean then
  begin
    DBGrid1.Canvas.FillRect(Rect);
    DrawFrameControl(DBGrid1.Canvas.Handle,Rect, DFC_BUTTON, CtrlState    [Column.Field.asboolean]);
  end;
end;

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  if DBGrid1.SelectedField.DataType=ftboolean then
  begin
    DBGrid1.SelectedField.DataSet.Edit;
    DBGrid1.SelectedField.AsBoolean:=not DBGrid1.SelectedField.AsBoolean;
    DBGrid1.SelectedField.DataSet.Post;
    DBGrid1.Options:=DBGrid1.Options-[dgEditing];
  end
  else
    if DBGrid1.SelectedField.DataType<>ftboolean then
      DBGrid1.Options:=DBGrid1.Options+[dgEditing];
end;
我有点疑问,想让DBGrid1.Options.dgEditing的属性变化,到底应该怎么写?
这个复选框可以说是临时的,它并不包含在数据库里。也就是说并不是再加一个字段,让它以CheckBox的形式显示。
(忘了说了):这个想法很好,但实际是不可能实现的(其实没有不可能的事,只是水平高低的问题)。最好的方法还是在数据库里添加一个CheckBox字段。试想,你在DBGrid外边加上20个CheckBox,而数据有几千条,你怎么和数据一一对应呢?

用cxGrid,里面设置字段有个property,把他设置成CheckBox

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。