本人刚接触delphi,按一本书上做的数据表操作例子,《delphi程序设计》该程序主要实现下面的功能:
. 用户通过浏览数据库表格,并可以对数据进行编辑修改。
. 当用户双击单元格时,显示其当前字段,并产生一个组合框。
. 用户在组合框中选取字段值,或自己输入字段值,单击后,自动添加到当前记录的对应字段中。、数据表有Name  Capital  Continent三列,程序运行后,当我双击修改一个人的Capital,修改过后,不立即更新,而且无论修改哪个人的Capital后,我一拉右边的滚动条,它改变的都是最上面一个人的Captial。不知道描述清没,主要如下,坐等吧。
unit Unit1;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,
Db,DBTables,Grid s,DBGrids,StdCtrls ;
type
TForm1 = class(T F o r m)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Query1: TQuery;
Button1: TButton;
ComboBox1: TComboBox;
Label1: TLabel;
procedure Button1Click(Sender: TO b j e c t);
procedure DBGrid1DblClick(Sender: TO b j e c t);
procedure ComboBox1Click(Sender: TO b j e c t);
private
{ Private declarations }
public
{ Public declarations }
end ;var
Form1: TForm1;
implementation
{$R *. D F M }
procedure TForm1.Button1Click(Sender: TObject);
begin
   application.Terminate ;
end ;
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
with DBGrid1.SelectedField do
   label1.visible: = true;
   label1.Caption := '请输入'+ DisplayName +'值:' ;with combobox1 do
begin
   Visible :=true;
   items.Clear ;
case DBGrid1.SelectedField.Index of
0 :
begin
   items.add('China ');
   items.add('Japan');
   items.add('France');
end ;
1:
begin
   items.add('Beijing ');
   items.add('Tokyo');
   items.add('Paris ');
end ;
2 :
begin
   items.add('Asia');
   items.add('Beijing');
   items.add('Tokyo');
   items.add('Paris');
end;
2:
begin
   items.add('Asia');
   items.add('Africa');
   items.add('Europe');
end;
3:
begin
   items.add('100000');
   items.add('10000');
   items.add('1000');
end;
4:
begin
   items.add('12000000');
   items.add('5000000');
   items.add('100000');
end;
end;
end;
end;procedure  TForm1.ComboBox1Click(Sender:TObject);//本人觉得问题应该在这里面
var
i:integer;
begin
with  combobox1 do
begin
   query1.Edit;
   query1.FieldByName(DBGrid1.SelectedField.displayname).asstring:=
   Items.Strings[itemindex];
   query1.Post;
   visible:=false;
   label1.Visible:=false;
end;
end;
end.