本人做了一个小工具,listbox用来显示数据库里的人名,希望每行显示4个人名,第5个人名开始换第2行,以此类推。
但是实际结果却是,先显示第1列(20个人名),第21个人名开始换第2列。代码如下:
----------------------------------------------------------------------------
while i<20 do
 begin
   move:=random(100);
   adoquery1.MoveBy(move);
   mingz:=adoquery1.Fieldbyname('shuangm').AsString;
   listbox1.Items.Append(mingz);   
   i:=i+1;
 end;
--------------------------------------------------------------------------------该如何修改,或设置?

解决方案 »

  1.   

    别用listbox了,它可以设置列的数量,换listview吧,添加四列,依次填写进去
      

  2.   

    listview没用过,对它的属性不了解,请教,在listview中类似listbox1.Items.Append(mingz)的语句是什么?
      

  3.   

    下面程序摘自delphi帮助,位于TListview的属性items的帮助的exampleprocedure TForm1.FormCreate(Sender: TObject);const
      Names: array[0..5, 0..1] of string = (
        ('Rubble', 'Barney'),
        ('Michael', 'Johnson'),
        ('Bunny', 'Bugs'),
        ('Silver', 'HiHo'),
        ('Simpson', 'Bart'),
        ('Squirrel', 'Rocky')
        );var
      I: Integer;
      NewColumn: TListColumn;
      ListItem: TListItem;
      ListView: TListView;
    begin
      ListView := TListView.Create(Self);
      with ListView do
      begin
        Parent := Self;
        Align := alClient;    ViewStyle := vsReport;    NewColumn := Columns.Add;
        NewColumn.Caption := 'Last';
        NewColumn := Columns.Add;
        NewColumn.Caption := 'First';    for I := Low(Names) to High(Names) do
        begin
          ListItem := Items.Add;
          ListItem.Caption := Names[I][0];
          ListItem.SubItems.Add(Names[I][1]);
        end;
      end;
    end;有问题先找帮助,再找google和baidu,实在不行了再来csdn
      

  4.   

    已了解listview1.Items.Add.Caption:=mingz;
    相当于listbox1.Items.Append(mingz);  但是还不了解怎么限定只显示四列,请教如何设置,或用什么语句,谢谢啦!
      

  5.   

    哦,楼主已经是这样做的了。
    或者,listbox.columns:=0;
    listbox,items.add(每4条记录,中间用分隔符分隔);
    然后在listbox的itemdraw事件里,分解得到4条记录,再根据listbox的宽度,在4个平均位置画出4条记录的值。
      

  6.   

    如果想显示列,ListVIew 比 ListBox 不是强一点点var
      i: Integer;
    begin
      ListView1.ViewStyle := vsReport;
      for I := 0 to 3 do
      ListView1.Columns.Add.Caption := IntToStr(i);
      with ListView1.Items.Add do
      begin
        Caption := 'caption';
        SubItems.Add('subitems-1');
        SubItems.Add('subitems-2');
        SubItems.Add('subitems-3');
      end;
    end;