关于下拉列表框的有关问题

关于下拉列表框的问题
我初学delphi,以前一直开发java+jsp的程序,想问一下在delphi里如何实现数据字典模式的下拉列表框,就是类似web下<option value="xx">name</option>的效果,显示的是name的内容,但提交的时候传到后台的是value里面的内容,其中value和name都是到数据库表里取到的值。
或者有没有其他更好的实现方式式,我太习惯以前的开发模式了,谢谢。

------解决方案--------------------
Delphi(Pascal) code


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  s:String;
begin
  s:='要取的值';
  combobox1.Items.AddObject('要显示的内空',Tobject(s));
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  label1.Caption:=string(ComboBox1.Items.Objects[ComboBox1.itemindex]);
end;

end.

------解决方案--------------------
在onGetText和OnSetText里面写事件
procedure TForm1.ADOQuery1Field111GetText(Sender: TField; var Text: string;
DisplayText: Boolean);
begin
Text:=Name值;
end;

procedure TForm1.ADOQuery1Field111SetText(Sender: TField; const Text: string);
begin
Text:=Value值
end;


------解决方案--------------------
Tcombobox这个里面只能存显示的值,要么就用一个指针结构来存,保存的时候就找这个选中值对应的ID值 
或者用EH控件 
PcomBoList = ^TComBoList; 
TComboList = record 
id : integer; 
name : string; 
end; 
ComList : TList; 
装载数据 
procedure TEHLibClass.InitCombox(Sender: TObject; sqlstr, keyName, 
keyID: string); 
var i : integer; 
 p : PcomBoList;
begin 
if sqlstr < > ' ' then 
begin 
with FADOQ do 
begin 
Close; 
Sql.Clear; 
Sql.Add(sqlstr); 
open; 
First; 
if RecordCount < > 0 then 
begin 
if UpperCase(TComponent(Sender).ClassName) = UpperCase( 'TComboBox ') then 
begin 
TComboBox(Sender).Items.Clear; 
TComboBox(Sender).Items.BeginUpdate; 
for i := 0 to RecordCount - 1 do 
begin 
new(p); 
p.id := Fieldbyname(keyID).AsString; 
p.name := Fieldbyname(keyName).AsString; 
ComList.add(p); 
if keyName < > ' ' then 
TDBComboBox(Sender).Items.Add(Fieldbyname(keyName).AsString); 
Next; 
end; 
TComboBox(Sender).Items.EndUpdate; 
end else if UpperCase(TComponent(Sender).ClassName) = UpperCase( 'TDBComboBoxEH ') then 
Begin 
TDBComboBoxEH(Sender).Items.Clear; 
TDBComboBoxEH(Sender).KeyItems.Clear; 
TDBComboBoxEH(Sender).Items.BeginUpdate; 
for i := 0 to RecordCount - 1 do 
begin 
if keyID < > ' ' then 
TDBComboBoxEH(Sender).KeyItems.Add(Fieldbyname(keyID).AsString); 
if keyName < > ' ' then 
TDBComboBoxEH(Sender).Items.Add(Fieldbyname(keyName).AsString); 
Next; 
end; 
TDBComboBoxEH(Sender).Items.EndUpdate; 
End 
end; 
end; 
end;
end; 

取出ID和显示值TComBoBox 
if ComboBox.itemIndex < > -1 then