var i,max:integer;
begin
 Max:=0;
 for i:=0 to Listbox1.Items.Count -1 do
   if Max<Length(listbox1.items[i]) then
     Max:=Length(listbox1.items[i]);
end;

解决方案 »

  1.   

    var i,max:integer;
    begin
    Max:=0;
    for i:=0 to Listbox1.Items.Count -1 do
      if Max<Length(listbox1.items[i]) then
        Max:=Length(listbox1.items[i]);
    end;ListBox1.Width := ListBox1.Canvas.TextWidth(Max);
      

  2.   

    //我补充一下
    //首先要设ListStyle 为lbOwnerDrawFixed
    procedure TFormItemAdd.Button1Click(Sender: TObject);
    var i,LongStr:integer;
    s:string;
    begin
    LongStr:=0;
    for i:=0 to Listbox1.Items.Count -1 do
      begin
      s:=listbox1.items[i];
      if LongStr<ListBox1.Canvas.Length(s) then
        LongStr:=ListBox1.Canvas.Length(s);
      end;
    ListBox1.Width := LongStr+6;
    //加6是要算listbox框的宽度
    //加多宽要根据框的宽度确定,同时还要考虑滚动条的情况,建议做个类直接使用TListBox.ClientWidth就避免了这些麻烦
    //end;
      

  3.   

    fengerfeifei(风儿飞飞) 才是正确的。