DELPHI中有没有一个控件或别的途径实现象C#中的例如LISTBOX,它的每一项(Iiem)都包含名称(Name)和(Value),一一对应的关系,我可以用Name去得到Value,也可以用Vaule去得到Name,  DELPHi中的ListBox好象只有一个值的,只有它有文本(Text),谢谢

解决方案 »

  1.   

    TStrings可以加TObject
    //试试下面这个,看能帮得上忙么
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      listbox1.Items.AddObject('aaa',TObject(pchar('我是A')));
      listbox1.Items.AddObject('bbb',TObject(pchar('我是B')));
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      showmessage(pchar(listbox1.Items.Objects[listbox1.ItemIndex]));
    end;
      

  2.   

    先谢大家,我想这个问题各位DELPHI大侠就没有遇到过.也不需要这种功能吗?比如我有一个部门文件,它有部门编号和部门名称,我们显示肯定是要显示部门名称,但却要得到部门编号
      

  3.   

    这种情况很多,不一定要用listbox来实现,用网格控件,或listview,把诸如“部门编号”这些不给用户看到的列隐藏起来即可。
      

  4.   

    有部门编号和部门名称,我们显示肯定是要显示部门名称,但却要得到部门编号
    ===================================================================================
    这类问题好解决,如果是数据表,用DBLookUpList,如果用Listbox,写一个记录数组,将部门名称装进Listbox,在其OnChange事件赋编号值即可
      

  5.   

    ListBox没有OnChange事件,在OnClick事件也行
      

  6.   

    记录数组  怎么用  ??  ﹐我真的很久沒3有用DELPHI了﹐應該是2002年用過的﹐那時是DELPHI6
      

  7.   

    给个程序片断作例子type
      DefaultStruct = record    //定义的记录
        Design: string;
        Width: Single;          // 尺寸以英寸为单位
        Height: Single;
      end;const    
      下面是记录数组                          
      PaperDefault: array[0..0] of DefaultStruct =    // 请在这里预定义像纸
        ((Design: '自定义'; Width: -1; Height: -1));  PhotoDefault: array[0..4] of DefaultStruct =    // 请在这里预定义像片
        ((Design: '5英寸 X 3.5英寸'; Width: 5;  Height: 3.5),
         (Design: '6英寸 X 4英寸'; Width: 6;  Height: 4),
         (Design: '3.5英寸 X 5英寸'; Width: 3.5;  Height: 5),
         (Design: '4英寸 X 6英寸'; Width: 4;  Height: 6),
         (Design: '自定义'; Width: -1; Height: -1));// PaperCombo和PhotoCombo是2个TComboBoxprocedure TNewForm.FormCreate(Sender: TObject);
    var
      I: Integer;
    begin
      PaperUnit := 1;
      PhotoUnit := 1;
      //用Design初始化ComboBox
      PaperCombo.Clear;
      for I := Low(PaperDefault) to High(PaperDefault) do
        PaperCombo.Items.Add(PaperDefault[I].Design);
      PaperCombo.ItemIndex := 0;     
      PhotoCombo.Clear;
      for I := Low(PhotoDefault) to High(PhotoDefault) do
        PhotoCombo.Items.Add(PhotoDefault[I].Design);
      PhotoCombo.ItemIndex := 1;     
      PaperComboChange(nil);
      PhotoComboChange(nil);
    end;
    //在Change事件赋值,我这里是直接写道TEdit中
    procedure TNewForm.PaperComboChange(Sender: TObject);
    var
      I: Integer;
    begin
      I := PaperCombo.ItemIndex;
      if PaperDefault[I].Width > 0 then
        PWEdit.Text := FloatToStr(PaperDefault[I].Width * PaperUnit);
      if PaperDefault[I].Height > 0 then
        PHEdit.Text := FloatToStr(PaperDefault[I].Height * PaperUnit);
    end;
      

  8.   

    能不能給几句簡單的﹐或者是說給個URL
      

  9.   

    不知道楼主想做什么?只是想比较俩个工具嘛?PB的数据窗口和edit都比DELPHI的好。这东西没法比的
      

  10.   

    不知道楼主想做什么?只是想比较俩个工具嘛?PB的数据窗口和edit都比DELPHI的好。这东西没法比的我想在DELPHI中實現C#的這種功能﹕LIstBOx里面的項有值(value)也有與之一一對應的名稱(name)
      

  11.   

    merkey2002(小样的) 就已经实现了,还争论什么啊
      

  12.   

    谢谢  merkey2002(小样的)   结贴
      

  13.   

    说的是 listview 吧??~~有caption 和items
    ★★★★★★★★★★★★★★★★★★★★
    ★★★★★★★★★★★★★★★★★★★★
      

  14.   

    RzListbox好像有ItemData的属性,是一个指针对象;不知道Listbox有没有