Q1:只要将DBGrid所连表的DataSource控件的AutoEdit属性设为FALSE就行。
Q2:数据的检查要在Table控件的AfterXXXX,BeforeXXXX事件里写代码。

解决方案 »

  1.   

    to TommyTong:
    1:很不好意思,少了一点,DBGrid要求可以编辑修改,但不可增加删除.
    2:兄弟,有没有看到我所附的内容—— 使用了CachedUpdate属性。
    麻烦认真看看我的问题。
      

  2.   

    snowglave(时代超人):请问,
    你使用什么控件来连接SQL数据库的? 
      

  3.   

    to qianhb(钱):
    1.当然是Query控件,但在DBGrid中要可以编辑,但不可增加和删除。
    2.在DBGrid中输入整型数据时,怎样控制不输入空值(NULL)?
    请指教!
      

  4.   

    一天的等待,一天的无奈!我的心也随着时间的推移而下沉。天!难道此问题没人能解吗?告诉我,csdn的朋友们,到底我该怎么做?
      

  5.   

    这是我动态创建窗体的例程
    用Delphi动态几个相同的窗体
    1.先定原窗体名如: 
       uses Outputtest
    2.在定义几个该窗体的变量
       Test1Form,Test2Form,Test3Form:TOutputTestForm;
       同时定义对应的几个布尔变量:
       Test1,Test2,Test3:Boolean;
    3.在对应的事件中加入
       if not Test1 then
          begin
             test1Form := TOutputTestForm.Create(Application);
             test1Form.Caption :='test1';
             test1Form.ShowCaption(1);
           end
        else
           Test1Form.WindowState :=wsNormal;
        test1Form.show;
    4.
    procedure TOutputTestForm.ShowCaption(Captions: Integer);
    begin
       FormFlag:=Captions;
       Name:='Test'+InttoStr(captions)+'Form';
       case captions of
          1:
            begin
               caption:='窗体'+InttoStr(captions);
               MainMDIForm.test1:=True;
            end;
          2:
            begin
               caption:='窗体'+InttoStr(captions);
               MainMDIForm.test2:=True;
            end;
          3:
            begin
               caption:='窗体'+InttoStr(captions);
               MainMDIForm.test3:=True;
            end;
       end;
       Left   :=0;
       Top    :=0;
       Height := 445;
       Width  := 790;
    end;
    5.在窗体关闭时
       case UserStrToInt(Copy(caption,Length(caption),1)) of
         1:
            begin
               Test1:=False;
               MainMDIForm.test1:=False;
            end;
         2:
            begin
               Test2:=False;
               MainMDIForm.test2:=False;
            end;
         3:
            begin
               Test3:=False;
               MainMDIForm.test3:=False;
            end;
       END;
      

  6.   

    你所说的增加是不是当焦点移到最后一行时,自动增加一空白行?
    如果是,可以在Eof时把焦点移到第一行或停到最后一行,具体程序好像是在datasource的一个叫ondatastatechange(大概是吧,时间长不用记不清了)事件里写。关于删除的问题,我好像记得,没有删除按钮不能在dbgrid中删除吧??
    如果能删除,试一试在数据集的beforedelete中执行abort,看行不行?
      

  7.   

    to jeaking:
      前一个问题如你所说我会试的,对于第二个删除问题,我用了CachedUpdate属性,beforedelete恐怕不行。
      

  8.   

    第一个:
      在BeforeDelete里写上Abort第二个:
      在BeforePost时检查数据的合法性。
      

  9.   

    用了CachedUpdate属性之后也行吗?
      

  10.   

    我的Delphi现在死掉了,等下我看看,应该是可以的,
    用CacheUpdate时,应该是要调用ApplyUpdates来把数据
    真正写入数据库的,自己再看一下帮助
      

  11.   

    不错,问题是要在执行ApplyUpdates之前,在DBGrid中编辑数据时要控制其不可增加或删除