unit Udblistbox; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, ExtCtrls, DBCtrls, DBTables; type TForm1 = class(TForm) DataSource1: TDataSource; DBGrid1: TDBGrid; Table1: TTable; DBNavigator1: TDBNavigator; Table1CustNo: TFloatField; Table1Company: TStringField; Table1Country: TStringField; DBListBox1: TDBListBox; Label1: TLabel; // procedure Button1Click(Sender: TObject); procedure DBGrid1DblClick(Sender: TObject); // procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; //Rect: TRect; State: TOwnerDrawState); //procedure ListBox1DblClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure DBListBox1DblClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} {procedure TForm1.Button1Click(Sender: TObject); begin dbgrid1.UpdateAction() end;} procedure TForm1.DBGrid1DblClick(Sender: TObject); begin //listbox1.Visible:=true; end; {procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var i: Integer; //定义循环变量 begin for i:=0 to(listBox1.Items.Count-1) do //通过循环对选中的Item进行定位 begin if listBox1.Selected[i] then //定位后,开始修改 begin Table1.Edit; //使数据库表处于编辑状态,便于修改 Table1.FieldByName('Country').AsString:=listbox1.Items.Strings[i]; //将在ListBox中选中的内容赋给当前记录的Country字段 Table1.Post; //把修改后的变化存入数据库表 end; end; end; procedure TForm1.ListBox1DblClick(Sender: TObject); var i: Integer; //定义循环变量 begin for i:=0 to(listBox1.Items.Count-1) do //通过循环对选中的Item进行定位 begin if listBox1.Selected[i] then //定位后,开始修改 begin Table1.Edit; //使数据库表处于编辑状态,便于修改 Table1.FieldByName('Country').AsString:=listbox1.Items.Strings[i]; //将在ListBox中选中的内容赋给当前记录的Country字段 Table1.Post; //把修改后的变化存入数据库表 end; end; end; } procedure TForm1.FormShow(Sender: TObject); begin dblistbox1.Items.Clear; table1.First; while not table1.Eof do begin dblistbox1.Items.Add(table1.Fields[1].Value); table1.Next; end; end; procedure TForm1.DBListBox1DblClick(Sender: TObject); var i: Integer; //定义循环变量 begin for i:=0 to(dblistBox1.Items.Count-1) do //通过循环对选中的Item进行定位 begin if dblistBox1.Selected[i] then //定位后,开始修改 begin Table1.Edit; //使数据库表处于编辑状态,便于修改 Table1.FieldByName('company').AsString:=dblistbox1.Items.Strings[i]; //将在DBListBox中选中的内容赋给当前记录的company字段 Table1.Post; //把修改后的变化存入数据库表 end; end; end; end.