我现在用dbgrid、dbedit等等连接到数据库,当修改以后点击其他地方会自动保存,(比如进入另一个窗口时)。请教用什么办法可以禁止自动保存?朋友教我用adotable的locktype。可惜不会使用。另请问当我判断adotable的Modified为true时提示:是否保存。如果点否我程序该怎么处理才可以使modefied变为false;并且还原修改以前的数据

解决方案 »

  1.   

    用一个dbnavigator不显示。
      

  2.   

    把DataSource的autoedit属性改为FALSE就可以了
      

  3.   

    用一个dbnavigator不显示。我也是这样作的。(偷懒 呵呵.....)
      

  4.   

    cacheupdate:=false;
    能取消数据集的更新
    还有个什么update,不记得了
      

  5.   

    cacheupdate:=True;
    必须调用Applyupdates才会保存,可以调用Cancel等取消,详细可以参见李维的高效数据库编程(D5)
      

  6.   

    procedure TMainForm.FormCreate(Sender: TObject);中加入:
    DBGrid.Options:=[dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgAlwaysShowSelection,dgConfirmDelete,dgCancelOnExit];用LabeledEdit或Edit关联数据库,不要用DBEdit加入DataSource的OnDataChange事件:
    procedure TMainForm.DataSourceDataChange(Sender: TObject; Field: TField);
    var
        i,n:integer;
    begin
        n:=-1;
        for i := 0 to MainForm.ComponentCount -1 do   
        begin
            if MainForm.Components[i] is TLabeledEdit then
            begin
                TLabeledEdit(MainForm.Components[i]).Text :='';
                TLabeledEdit(MainForm.Components[i]).EditLabel.Caption :='';
            end;
        end;    n:=-1;
        for i := 0 to MainForm.ComponentCount -1 do  
        begin
            if MainForm.Components[i] is TLabeledEdit then
            begin
                n:=n+1;
                if n<Table.FieldCount then
                begin
                    TLabeledEdit(MainForm.Components[i]).Text :=Table.Fields[n].AsString;
                    TLabeledEdit(MainForm.Components[i]).EditLabel.Caption :=Table.Fields[n].FieldName;
                end;
            end;
        end;
    end;这样你的LabeledEdit或Edit就关联上数据库了,而且你修改也不会自动保存
    再加个按钮,按确定以后再用Table.AppendRecord添加数据