在dbgrid里面加入checkbox可以不使用其他的控件,利用dbgrid的某些属性设置也可以

解决方案 »

  1.   

    用一个dbcheckbox,visible属性设置为false;dbgrid的
    defaultdrawing属性设置为True
    procedure 
    TForm1.Dbgrid1drawcolumncell(sender:Tobject;Co
    nst Rect:Trect;.....);
    begin
    if (gdfocused in 
    state)and(column.field=Table1senior) then
    begin
    dbcheckbox1.setbount(rect.left+dbgrid1.left+1,
    Rect.top+dbgrid1.top+1,
    rect.right-rect.left,
    rect.bottom-rect.top);
    end;
    end;procedure TForm1.dbgird1colenter(...);
    begin
    if 
    dbgrid1.columns[dbgrid1.selectedindex].field=t
    able1senior then
    dbcheckbox1.visible:=true
    else
    dbcheckbox1.visible:=false;
    end;procedure TForm1.dbgrid1keypress(..);
    begin
    if dbcheckbox1.visible and (ord(key)>31) then
    begin
    key:=#0;
    table1.edit1;
    dbcheckbox1.checked:=not dbcheckbox1.checked;
    dbcheckbox1.field.asbooolean:=dbcheckbox1.chec
    ked;
    end;
    end;
      

  2.   

    在dbgrid里面加入checkbox可以不使用其他的控件,利用dbgrid的某些属性设置也可以]用一个dbcheckbox,visible属性设置为false;dbgrid的
    defaultdrawing属性设置为True
    procedure 
    TForm1.Dbgrid1drawcolumncell(sender:Tobject;Co
    nst Rect:Trect;.....);
    begin
    if (gdfocused in 
    state)and(column.field=Table1senior) then
    begin
    dbcheckbox1.setbount(rect.left+dbgrid1.left+1,
    Rect.top+dbgrid1.top+1,
    rect.right-rect.left,
    rect.bottom-rect.top);
    end;
    end;procedure TForm1.dbgird1colenter(...);
    begin
    if 
    dbgrid1.columns[dbgrid1.selectedindex].field=t
    able1senior then
    dbcheckbox1.visible:=true
    else
    dbcheckbox1.visible:=false;
    end;procedure TForm1.dbgrid1keypress(..);
    begin
    if dbcheckbox1.visible and (ord(key)>31) then
    begin
    key:=#0;
    table1.edit1;
    dbcheckbox1.checked:=not dbcheckbox1.checked;
    dbcheckbox1.field.asbooolean:=dbcheckbox1.chec
    ked;
    end;
    end;
      

  3.   

    DevExpress组件中的dxDBgrid可以眩倒一片,我们的商业软件都是那她做,如果把他们公司的其他控件下来一起用,就得吧你爽死,想什么作什么,代码量出奇的少,一般数据库软件对它的控制不过一两行代码,开发速度极快