access数据库中有张表“Alarm”,主键是AlaKey,还有一个RepKey,其他的内容就不说了,产生一条记录的时候RepKey是空的,以后更新用,作用在后面说。
现在需要的功能是:
用一个表格显示Alarm里面的记录,每条记录的第一列是放checkbox的,是每条都有,就像checklist一样的,不过是表格。如果RepKey不是空的,checkbox就是打上勾的,而且不能修改,就是ReadOnly。如果RepKey是空的,checkbox就没有打勾,可以被修改,用户可以在这些可选择的记录前打勾进行多选,选定后,有一个按钮产生另外的一个form,并且把刚才选中的记录的某些字段内容传给这个新的form,单那个form关闭的时候更新数据库,把刚才选中的记录的RepKey更新一下(其实只要传个AlaKey就行了,这个不用做了,我只是讲清楚一点)。
表格也是有滚动条的,因为记录也许很多。希望各位帮忙,最好能有源码或者例子,也可给我发信件,[email protected],只要实现了这样的功能,立即给分,不够再加(可以加的吧:),我不怎么会发帖子,只会看)

解决方案 »

  1.   

    可以用DBgrid也可以用stringGrid
    見意你用StringGrid這個處理表格的多選和單選比較靈活一點。
      

  2.   

    用DBGridEH嘛如果你的字段为boolean,它就会出现checkbox,你要的功能都能实现
      

  3.   

    1、你的RepKey在应用CheckBox时不能是“空”或是“非空”来判断,而应是一个确定值,比如:打勾时为“1”,否则为“0”;
    2、如果要简单的话,请使用第三方控件:InfoPower 4000里的wwDBGrid控件;一旦设置好数据源之后双击控件,即弹出一个标题为“Select Fields”的窗口,选定RepKey字段,在“Edit Control”页上,Control Type 选择为:CheckBox,再设置一下Checked为1和UnChecked为0就可以了。关闭这个设置窗口,你就会发现RepKey所在列已变成CheckBox了;
    3、如果已经打勾,就不能修改:
    procedure TForm1.ADODataSet1AfterEdit(DataSet: TDataSet);
    begin
      if ADODataSet1.FieldByName('RepKey').AsString='1' then ADODataSet1.Cancel;
    end;
    4、InfoPower 4000非常好用,很多地方都有下。www.51delphi.com就有。
      

  4.   

    有一个按钮产生另外的一个form,并且把刚才选中的记录的某些字段内容传给这个新的form我比较关注这个怎么做
      

  5.   

    多谢各位的关注!回 chenylin(陈SIR) :
    RepKey是一个字符串,以后将更新为后面form提交的Report的Key
    wwDBGrid控件我已经用了,那个checkbox功能我也用过了,我说的打勾,意思是这条记录的RepKey已经存在的情况下打上勾且不能修改,而如果在一次操作中可以打勾也可以取消,其实我就是想用checkbox的选择代替multiselect,但是不能选RepKey已经存在的记录
    如果设置一个字段,用0、1表示有无RepKey,那一旦改变checkbox的值以后,再点其他地方的时候,checkbox的值不就自动更新了吗?如果用户是点错了,想取消怎么办?
    我现在暂时就用wwDBGrid的multiselect功能做,当选到RepKey的记录时候有警告,暂时先用到,希望各位继续想想办法,多谢,结贴时候一定给分!
      

  6.   

    定义一个全局变量 产生FORM后直接调用全局变量的数据
      

  7.   

    1、通过TDBGridEh来操作,或者通过TStringGrid来操作,只是用来画出CheckBox
    剩下的就有2种方案
    2.1、不通过数据感应控件直接修改数据,而是通过以上表格控件的CellClick来控制修改数据,也就是按照以上你的规则
    2.2、通过数据感应控件直接修改数据,但是在数据的BeforePost事件中加入以上规则,如果不满足,直接以Abort中止执行不预保存
      

  8.   

    用StringGrid,CheckBox还可以用图片来模拟要漂亮多了!
      

  9.   

    回 Hank(星星农场) :用TDBGridEh或者TStringGrid来画出checkbox,那么必然checkbox是对应于一个字段的
    那么按照2.1的说法,用cellclick来控制,那用checkbox不就没有什么用处了?只是一开始显示一下,checkbox的状态是不能被用户更改的?
    2.2的方法,是可以保证原来已经存在RepKey的记录不被选择,也就是checkbox是不能被改变,但是如果用户改变了状态以后,如何改回来?用一个list来存放?谢谢你的建议,今天尝试一下,偶是新手,呵呵