比如 我选择了combobox中的 硕士,其实我取的数值是10,本科取值是9.由于有很多此类数据,就不想在sql中写 case when ...等,寻找简单的方法.

解决方案 »

  1.   

    放两个combobox,一个置为不可见
    procedure TForm1.FormShow(Sender: TObject);
    begin
        ComboBox1.Items.Clear;
        ComboBox2.Items.Clear;
        ComboBox1.Items.Add('博士');
        ComboBox1.Items.Add('硕士');
        ComboBox1.Items.Add('本科');
        ComboBox1.Items.Add('小学');
        ComboBox2.Items.Add('10');
        ComboBox2.Items.Add('9');
        ComboBox2.Items.Add('8');
        ComboBox2.Items.Add('7');
    end;procedure TForm1.ComboBox1Change(Sender: TObject);
    begin
        ComboBox2.ItemIndex:=ComboBox1.ItemIndex;
        ShowMessage(ComboBox2.Text);
    end;
      

  2.   

    type
      pFields=^TFields;//定义一个记录集
      TFields=Record
        ID,Name:String;
        Code:Integer;
      end;在添加到ComboBox时如下:
    var pF:pFields;
    begin
    New(pF);
    pF.ID:=ADOQuery1.FieldByName('ID').AsString;
    pF.CName:=ADOQuery1.FieldByName('CName').AsString;
    pF.Code:=ADOQuery1.FieldByName('Code').AsInteger;
    ComboBox1.Items.AddObject(pF.CName,TObject(pF));//ComboBox1.Items.AddObject('要显示的内容',TObject(记录集(不能为nil)));调用时如下:
    begin
      if ComboBox1.ItemIndex<0 then Exit;
      Edit1.Text:=IntToStr(pFields(ComboBox1.Items.Object[ComboBox1.ItemIndex]).Code);
    end;