我要实现的是,改变DataGrid选中的记录的值.
我的代码如下:
for i:=0 to DataGrid1.Count-1 do
begin
if DataGrid1.Items.Selected then
begin
if DataSetBroker1.DataSet.Locate('Field_XX',1+DataGrid1.Items.Index,[]) then
begin
dsbReport.DataSet.Edit;
dsbReport.DataSet.FieldByName('Field_XX).AsFloat := DataSetBroker1.DataSet.FieldByName('Field_XX).AsFloat-SysUtils.StrToFloat(Edit1.Text);
dsbReport.DataSet.ApplyUpdates;
DataGridEdit.Items.Selected := True;
end;
end;
end;
var
i:integer;
begin
for i:=0 to DataGrid1.Count-1 do
begin
if DataGrid1.Items.Selected then
begin
// if DataSetBZSJJ1.Locate('fid',DataGrid1.Items.Values[0],[]) then
// begin
// dialogs.ShowMessage(DataSetBZSJJ1.FieldByName('fid').AsString);
dialogs.ShowMessage(objecthelper.ToString(DataGrid1.Items.Values[0]));
//DataGridEdit.Items.Selected := True;
// end;
end;
end;
end;
你的问题应该是用网格数据源定位的问题。
如果不定位就不会出现偏差,取值可以从网格上直接取值。看我上面例子。