高手们:
你们好!
我怎么就是搞不定dbgrid呢?关于上面的问题,你们有例子吗?谢谢

解决方案 »

  1.   

    那就请你们给看看代码:第1个过程的是想修改某字段;其他过程是想先生成checkbox,再选择记录delete;procedure Tcjxg_fr.modify_btClick(Sender: TObject);
    begin
       with stuxinxi_Dm do
       begin
        adoquery1.Close;
        adoquery1.SQL.Clear;
        adoquery1.SQL.Add('update chengjibiao set grade=strtofloat(jg_dbg.Columns[3].text) where t_cj.stu_no=t_xj.stu_no and t_cj.kecheng_no=t_kc.kecheng_no');
    //这里有语法错误
        adoquery1.Open;
        adoquery1.CanModify;
        adoquery1.Edit;
        jg_dbg.Columns[3].ReadOnly:=false;
        adoquery1.Post;
        messagedlg('修改成绩成功!',mtconfirmation,[mbyes],0);
       end;
    end;//从这里起的代码都是来生成checkbox并delete记录,为啥没反应呢?
    procedure Tcjxg_fr.jg_dbgCellClick(Column: TColumn);
    begin
    application.MessageBox('您可以修改成绩!','给您的提示',mb_ok+MB_ICONEXCLAMATION );if jg_dbg.SelectedField.DataType = ftBoolean then
      SaveBoolean();end;
    procedure Tcjxg_fr.SaveBoolean;
    begin
      jg_dbg.SelectedField.DataSet.Edit;
      jg_dbg.SelectedField.AsBoolean := not jg_dbg.SelectedField.AsBoolean;
      jg_dbg.SelectedField.Dataset.Post;
    end;procedure Tcjxg_fr.jg_dbgDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);Const
     CtrlState : array[Boolean] of Integer = (DFCS_BUTTONCHECK,
         DFCS_BUTTONCHECK or DFCS_CHECKED);
    var
     CheckBoxRectangle : TRect;
    begin
     if Column.Field.DataType = ftBoolean then
     begin
     jg_dbg.Canvas.FillRect(Rect);
     CheckBoxRectangle.Left := Rect.Left + 2;
     CheckBoxRectangle.Right := Rect.Right - 2;
     CheckBoxRectangle.Top := Rect.Top + 2;
     CheckBoxRectangle.Bottom := Rect.Bottom - 2;
     DrawFrameControl(jg_dbg.Canvas.Handle,
          CheckBoxRectangle,
          DFC_BUTTON,
          CtrlState[Column.Field.AsBoolean]);
     end;
    end;procedure Tcjxg_fr.jg_dbgColEnter(Sender: TObject);
    begin
     if jg_dbg.SelectedField.DataType = ftBoolean then
     begin
      FOriginalOptions := jg_dbg.Options;
      jg_dbg.Options := jg_dbg.Options - [dgEditing];
     end;end;procedure Tcjxg_fr.jg_dbgColExit(Sender: TObject);
    begin
     if jg_dbg.SelectedField.DataType = ftBoolean then
      jg_dbg.Options := FOriginalOptions;end;procedure Tcjxg_fr.del_btClick(Sender: TObject);
    begin
    if jg_dbg.SelectedField.DataType = ftBoolean then
      SaveBoolean();end;
      

  2.   

    adoquery1.SQL.Add('update chengjibiao set grade=strtofloat(jg_dbg.Columns[3].text) where t_cj.stu_no=t_xj.stu_no and t_cj.kecheng_no=t_kc.kecheng_no');
    //这里有语法错误
        adoquery1.Open;
    ========================
    t_cj.stu_no=t_xj.stu_no and t_cj.kecheng_no=t_kc.kecheng_no
    你这是什么?    adoquery1.Open;
    不能用Open,Open只能用在有返回数据集时(如:select);
    修改,删除,插入用:ExecSQL
    改成:
        adoquery1.ExecSQL;
      

  3.   

    t_cj.stu_no=t_xj.stu_no and t_cj.kecheng_no=t_kc.kecheng_no
    这是2个外键条件
      

  4.   

    在delphi里能用select语句查到表里自定义 的列吗?
    如select 0 as flag from 表
    报错:can not access field 'flag' as type boolean
    那到底怎么写呢?