如題

解决方案 »

  1.   

    DBGrid可能不便改变值,试用StringGrid
    如何编写使StringGrid中的一列具有Check功能,和CheckBox效果一样 
    unit Unit1;interfaceuses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids;type
    TForm1 = class(TForm)
    grid: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure gridDrawCell(Sender: TObject; ACol, ARow: Integer;
    Rect: TRect; State: TGridDrawState);
    procedure gridClick(Sender: TObject);private
    { Private declarations }public
    { Public declarations }end;var
    Form1: TForm1;
    fcheck,fnocheck:tbitmap;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
    var
    i:SmallInt;
    bmp:TBitmap;
    begin
    FCheck:= TBitmap.Create;
    FNoCheck:= TBitmap.Create;
    bmp:= TBitmap.create;
    try
      bmp.handle := LoadBitmap( 0, PChar(OBM_CHECKBOXES ));
      With FNoCheck Do Begin
       width := bmp.width div 4;
       height := bmp.height div 3;
       canvas.copyrect( canvas.cliprect, bmp.canvas, canvas.cliprect );
      End;
    With FCheck Do Begin
      width := bmp.width div 4;
      height := bmp.height div 3;
      canvas.copyrect(canvas.cliprect, bmp.canvas, rect( width, 0, 2*width, height ));
    End;
    finally
      bmp.free
    end;
    end;procedure TForm1.gridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
    begin
    if not (gdFixed in State) then
      with TStringGrid(Sender).Canvas do
    begin
      brush.Color:=clWindow;
      FillRect(Rect);
      if Grid.Cells[ACol,ARow]='yes' then
       Draw( (rect.right + rect.left - FCheck.width) div 2, (rect.bottom + rect.top - FCheck.height) div 2, FCheck )
      else
       Draw( (rect.right + rect.left - FCheck.width) div 2, (rect.bottom + rect.top - FCheck.height) div 2, FNoCheck );
    end;
    end;procedure TForm1.gridClick(Sender: TObject);
    begin
    if grid.Cells[grid.col,grid.row]='yes' then
      grid.Cells[grid.col,grid.row]:='no'
    else
      grid.Cells[grid.col,grid.row]:='yes';
    end;end.
      

  2.   

    dbgrid没有这种功能
    找一下三方控件,有这种东东
      

  3.   

    用dxDbgrid这个控件就可以了,这是一个第三方控件,很好用的!我这有,如要请发邮件!
      

  4.   

    EEsslongli(明)请给我一份,谢谢
    [email protected]
      

  5.   

    [email protected]  我等著用呢,再給20分給你,謝謝了
      

  6.   

    好像dxdbgrid 沒有這個功能嘛?????????????,只是可以任意排序,任意分組而已阿(我下載的是ExpressQuantumGrid 5.3,不知道對不對)
      

  7.   

    用InfoPower的wwdbgrid,可以實現這種功能,比dbgrid功能強多了
      

  8.   

    那位給我發個cxgrid的使用說明阿,謝謝,[email protected]   49567511   或者就帖再帖子上阿
      

  9.   

    請問;okhorse(喜歡三更半夜瞎逛) ;     wwdbgrid 是網頁控件嗎,我要的是delphi的應用程序控件阿
      

  10.   

    用图片代替不就行了,加一个列,选中时显示checked,未选中是unchecked在OnDrawColumnCell写代码就是了。
      

  11.   

    除非這個列全部綁定的是checkbox阿,否則怎麼選中時候顯示checked 阿,不理解,,,你做過這個東東嗎,發點程序和執行的圖片來看看嘛,謝謝
      

  12.   

    if ADOQuery1Fstatus.asString='Y' then
         Text:='√'
        else
         Text :='×'
    这个在某个字段就可以显示打钩了
      

  13.   

    if (gdSelected in State ) then      //
      begin
        if (Column.Field.FieldName = DBCheckBox1.DataField) then
        begin
         DBCheckBox1.Left := Rect.Left + DbGdMain.Left + 2;
         DBCheckBox1.Top := Rect.Top + DbGdMain.top + 2;
         DBCheckBox1.Width := Rect.Right - Rect.Left;
         DBCheckBox1.Height := Rect.Bottom - Rect.Top;     DBCheckBox1.Visible := True;
        end;