本人刚接触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.
. 用户通过浏览数据库表格,并可以对数据进行编辑修改。
. 当用户双击单元格时,显示其当前字段,并产生一个组合框。
. 用户在组合框中选取字段值,或自己输入字段值,单击后,自动添加到当前记录的对应字段中。、数据表有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.
我手头有个另外的DBGrid程序,留个邮箱我发给你吧。
有的教材举的例子真不怎么地,实际用的很少。
[email protected]
感激不尽。
光标指的就是其他行,而且我直接在那表格里改可以改。但是通过那个ComboBox1下拉里面的选项修改,就不行。总是修改的第一行