在vb中:
   ListBox1.AddItem 'aaaaa'
   ListBox1.ItemData(List1.NewIndex) = 1000
其中ItemData属性非常有用,我们可以将listbox看似一个二维数组.在delphi中的listbox不知如果实现.
  

解决方案 »

  1.   

    ListBox1.Items.Objects[]也可以实现,object的功能更强大,只要把要贮存的数据的指针放到object里就可以了。我经常用来放记录数组,别说二维了,n维都可以啦。
      

  2.   

    to victor_yang
      能写个实例吗.
      

  3.   

    THostList = record
        hlID:String;
        hlCName:String;
        hlServer:String;
        hlIPAddr:String;
        hlMacAddr:String;
      end;procedure TForm_EmployeeManager.GetHostList;
    var
      aQuery:TSHQuery;
      vHost:^THostList;
      i:integer;
    begin
      aQuery:=TSHQuery.Create(nil);
      ListBoxHost.Clear;
      with aQuery do         //数据库取数据
      begin
        SQL.Clear;
        SQL.Add('SELECT  * FROM THOSTLIST');
        SQL.Add('WHERE MACID NOT IN (');
        SQL.Add('SELECT HL.MACID FROM TUSERHOSTS UH');
        SQL.Add('LEFT JOIN THOSTLIST HL ON UH.HOSTID=HL.MACID');
        SQL.Add(format('WHERE UH.USERID=%d)',[CurID]));
        SQL.Add('ORDER BY IP_ADDR');
        try
          Open;
          i:=1;
          while not eof do             //循环
          begin
            New(vHost);                //分配空间
            vHost.hlID:=FieldByName('MacID').AsString;
            vHost.hlCName:=FieldByName('CName').AsString;
            vHost.hlServer:=FieldByName('HostName').AsString;
            vHost.hlIPAddr:=FieldByName('IP_Addr').AsString;
            vHost.hlMacAddr:=FieldByName('Mac_Addr').AsString;
            ListBoxHost.Items.Add(format('%d,%s - %s',[i,vHost.hlCName,vHost.hlIPAddr]));
            HostList.AddObject(vHost.hlID,Pointer(vHost));    //这里是关键
            Inc(i);
            Next;
          end;
        except
        end;
      end;
    end;
      

  4.   

    procedure TForm_EmployeeManager.DelHost(vID:String);
    var
      vHost:^THostList;
      i:integer;
    begin
      inherited;
      for i:=0 to HostList.Count -1 do
      begin
        if HostList.Objects[i]=nil then continue;
        vHost:=pointer(HostList.Objects[i]);
        if vHost.hlID=vID then
        begin
          HostList.Delete(i);
          ListBoxHost.Items.Delete(i);
          Break;
        end;
      end;
    end;查找和删除的实例
      

  5.   

    to victor_yang
      vHost.hlID是否应该改成 VHost^.Hid