我在窗口上放上ComboBox1 和EDIT1
Combobox1里的内容是从数据表里读出来的. 现在的问题是,如何选择ComboBox1里的内容后,把表中编号对应的一条内容放进Edit1内.表结构如下:Id No display (id为自动编号,)
1 10001 小明
2 10002 小红
3
. .. ..
. .. ..
我在ComboBox1里选中了1002 后Edit1 的内容为"小红"
Combobox1里的内容是从数据表里读出来的. 现在的问题是,如何选择ComboBox1里的内容后,把表中编号对应的一条内容放进Edit1内.表结构如下:Id No display (id为自动编号,)
1 10001 小明
2 10002 小红
3
. .. ..
. .. ..
我在ComboBox1里选中了1002 后Edit1 的内容为"小红"
解决方案 »
- delphi如何读取jpg等图片文件的属性?
- 高手请进:(附源码),256色旋转算法速度问题:角度越大,速度越慢.(原因是内存颠簸造成,)
- 如果用tlist来保存bmp图形,那么该如何给它赋值呢?我试过tbmp.b.Assign(image1.picture.Bitmap)不能通过。
- 网络抓包程序疑惑,不能抓到发送的数据包
- 请问一个关于DBGRID的简单问题
- oracle连接远程数据库问题
- ★★这是什么错误啊?★★
- 在一个过程中如何引用另一个过程?
- 帮忙介绍一个可以实现WORD风格标尺的控件,最好能跟RichEdit结合使用,送100分
- 如何引入flash动画????
- 求救,DevExpress控件包问题,ExpressEditorsLibrary 5.17中的控件与dxNavBar控件冲突问题
- 回调函数的问题,请大家帮帮 忙
建议使用DBComboBox和DBEdit,会方便很多。
这个建议好但是控制起来不方便
还有一种方法
type
TUser_List = class(object)
Id :integer;
No :string;
display :string;
end;
......
UserList:TList;
......
先type一个记录类,可以在你加载combobox的时候,同时加载类到UserList里,不过这样做比较费用又费内存。
就和上面说的一样用DataSet最好。
var
sNo,sSQL:string;
begin
sNo := ComboBox1.Text; //or ComboBox1.Items[ComboBox1.ItemIndex]
sSQL := ' SELECT Display FROM Table1 ' +
' WHERE No =' + QuotedStr(sNo); //No须唯一,最好用ID
with adoQuery1 do
begin
Close;
SQL.Text := sSQL;
Open;
if not Eof then
Edit1.Text := Fields[0].AsString;
Close;
end;
end;
1.Combobox1: select No from A where ... 将查询到的内容add到Combobox1中
2.当你选择了Combobox1中的某项后(假使是sNo: string),取内容再写个查询:
select * from A where No='+sNo+' 将查询到的内容赋值给Edit1这样的问题以后别给那么多分 :)
在ComboBox1中增加内容使用以下类似方法代替:
ComboBox1.Values['小红'] = '10002';
实际写的时候当然是变量, 如:
ComboBox1.Values[strDisplay] = strNo;我在ComboBox1里选中了某个ID后的代码如下
Edit1.Text := ComboBox1.Names[ComboBox1.ItemIndex];
内容为: 1 长沙 0731
2 株洲 0732
3 湘潭 0733
Guangdong 表结构为:ID HuNan No
Hubei 表结构为:ID HuNan No
.........................
依次类推..
现在已经已经通过 Combobox1 的事件实现了 当选中Combobox1后Combobox2出现了对应的内容.(例如: 选中Combobox1的HuNan 后,Combobox2出现了 长沙,湘潭 ,株洲 ,等内容)
procedure TForm1.ComboBox1Change(Sender: TObject);
var
tmpFiledName:string;
begin
ComboBox2.Style:=csDropDownList;
tmpFiledName:=ComboBox1.Text;
ShowMessage(tmpFiledName);
with ADOQuery2 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT '+tmpFiledName+'FROM '+tmpFiledName+' ');
Open;
end;
ComboBox2.Items.Clear;
while not ADOQuery2.Eof do
begin
ComboBox2.Items.Add(ADOQuery2.Fields[0].Value);
ADOQuery2.Next;
end;
end;
现在的问题是,我现在想现实 当我选中 Combobox2的某条选项后出现对应的编号.例如:
选中combobox1 中的HuNan 后, 出现对应的内容 长沙,株洲 ,湘潭, 当我选择长沙后,Edit1出现 0731 ????
Number:array[0..100] of integer; //全局数组;//你的原程序
ComboBox2.Items.Add(ADOQuery2.Fields[0].Value);
//这里加上一句,记录下每个对应的No号
Number[i]:=ADOQuery2.Fields[No的序号].Value;
Inc(i);
ADOQuery2.Next;
这样用的时候就
Edit1.Text:=IntToStr(Number[ComboBox2.ItemIndex]);