我想在dbgrid中,在每一行的第一列加一个checkbox,这个checkbox的值与dbgrid的datasource中的列的值无关,当选中该行记录后,checkbox就选中,也就是说想用checkbox来表示该行记录是否被选中。最好有现成的控件。

解决方案 »

  1.   

    使用STRINGGRID自己画图片可以这样做。
      

  2.   

    datasource 裡加多一個bool型的查詢列
      

  3.   

    用第三方控件,如dxDBGrid, cxDBGRid... 功能强大
      

  4.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if  DataCol=0  then
         DrawFrameControl(TDBGrid(Sender).Canvas.Handle,Rect,DFC_BUTTON,DFCS_CHECKED);
    end;
      

  5.   

    使用第三方控件,比如dbgridEh.
      

  6.   

    如果有现成的控件你不會為了這個小小的需求去安裝巨大的dexExpress控件吧!
    的确dexExpress控件能完成你的需要.其實寫代碼控制也不難. 比如 jinjazz(近身剪(N-P攻略))的作法可以實現你的功能.
    但是不知道如何使畫的CheckBox選中或不選.另外一個方案是:
    在Datasource對應的DataSet自定義一個內部計算字段.假設你的DataSet是TClientDataset
    那麼新增個自定義個fkInternalCalc字段. 用戶雙擊則這個字段的數值=true,反之=false;
    但麻煩的是還要自己在DrawColumnCell事件內畫選中和未選中的圖片.如果上的面的情況滿足樓主的需要, 我可以貼上畫圖片的代碼.
      

  7.   

    dbgridEh如何使用啊?应该怎样设置?最好只要设置属性而不需要写代码。
      

  8.   

    用InfoPower控件,现在市面上的软件,dbgrid基本上都用它的