我设置了相关的checkboxes=true
这个好了,复选框是有了,可是就是点不了。我的数据库是oracle的,据说里面是没有布尔类型的。所以我设置是char(1)默认是'0'
然后keylist '1','0'.可是为什么就是点不了呢?要编写什么事件啊?我用的是ehlib的,他的那个demo我也看了,好像是用了tdbcheckbox。但是没有看懂。
尤其郁闷的是,我有个好使的源代码,也没有照demo那么设置,就是好使,不解。
我的不可点击的源代码如下:
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, RzDBGrid, DBGridEh, DB, ADODB;type
  TForm1 = class(TForm)
    DBGridEh1: TDBGridEh;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    procedure DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
  DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;end.

解决方案 »

  1.   

    这个问题我也研究过一段时间,网上说的用keylist的方法,我也试过不行可能必须将checkbox单元格与表中字段对应才能选择
      

  2.   

    或者自己写代码在单元格中加载checkbox控件
      

  3.   

    谢谢你的回答。我现在的checkbox是与数据库里连的呀。我数据库里的字段为isadd默认值是'0'
    可是我现在就是点不到,我真是不理解。
    你说在单元格里加载checkbox控件是什么意思?
    把checkbox绑定到dbgrid中?
      

  4.   


    所以我现在的状态都是选中状态,可是,为什么我不能通过点击checkbox来改变选中还是没有选中的状态啊?
      

  5.   

    你那个checkbox指定字段了?keylist中也输入值了?这样应该就可以了啊,要不你把picklist中也输入与keylist相同的值试试就是把checkbox控件显示在指定单元格内,看起来像是跟dbgrid一体的一样
      

  6.   

    都试了啊,我现在把keylist去了也是有复选框的,但是就是不能够点。
    而且双击也不能够激活。
    我那个附件是我的原文件,要不你帮我看看是怎么回事吧,感激不尽。
      

  7.   

    你连接的是oracle数据库,我这儿没有,改成sql后可以啊
      

  8.   

    最最郁闷的就是oracel里面没有boolean类型。查网上说,oracle用numeric 或者是char来表示boolean,我那个字段是char(1)类型的。
    你改成sql后可以了??
    天啊,我晕了。
    我那个是灰色的,请问一下,你是不是修改了dataset的属性啊,我用的是delphi7.
      

  9.   

    没修改,我用的是delphi6我改成sql,初始显示也是灰色,但是用鼠标点击后就能选择了你的那个checkbox是不是将readonly设成true了?
      

  10.   

    它那个默认是checkbox是不是将readonly设成true的。
    你的初始显示是灰色的,鼠标点击后就能选择是在运行的时候吗?
    我在运行的时候,就是checkbox那一列不能够勾选,这一行还是可以选中的,但是就是不会打勾,复原这样的复选操作。
    我想一定是可以用delphi7和oracle的,因为我是照着一个源码写的,可是那个就可以勾选,我的就不可以。
    那么你知不知道
    inc(no)是什么意思吗?这个inc()函数好像是一个系统函数,我看那个源码里写了,可是不知道这个是什么意思。no是一个整数,
      

  11.   

    我用BDE里的数据库试了一下,可以弄成想要的那种样子,看来是oracle的原因了,
    我看我师兄的那个代码里面加了inc(no).不过,我不知道这个是什么意思,如果你可以告诉我的话,感激不尽啊。
    我再研究研究我师兄的代码。
    谢谢你的回答了。
      

  12.   

    inc函数的功能就是将某变量加1或加n
    inc(no)实际就是no:=no+1;
    inc(no,4)实际就是no:=no+5;在遇到不知道如何使用的函数时,可以通过F1键获取帮助信息
      

  13.   

    应该将那个checkbox的readonly属性设成false
      

  14.   

    checkbox的readonly属性设成false。我设置了,可能因为oracle里面没有boolean类型的原因吧。暂时我还没有处理好。
    现在还是灰色的。我再研究研究。谢谢你的回答。
      

  15.   

    刚开始那个checkbox怎么都点不了,后来发现我的SQL 写了个distinct,对于这种SQL出来的数据集,他更新不了。so我把distinct去掉了。可是还是有错,说什么“缺少更新或刷新的键列信息”。然后我就发现是那个locktype的问题,改成ItBatchOptimistic 就好了。
      

  16.   

    我之前也有用过用delphi7连接sql那个选择框可以选,现在用oracle数据就不行了,用char(1)或NUMBER(1)都不行。
    楼主现在可以了吗?可不可以说怎么弄的,我的是用clientdataset连接3层结构,不是adoquery,应该也能应用你的吧。字段类型是char(1)吗?
      

  17.   

    但为什么在C++BUILDER 下还是点不了
      

  18.   


    但为什么在C++BUILDER 下还是点不了