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添加数据
能取消数据集的更新
还有个什么update,不记得了
必须调用Applyupdates才会保存,可以调用Cancel等取消,详细可以参见李维的高效数据库编程(D5)
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添加数据