如何让FileListBox有横行拉动的滚动条?

解决方案 »

  1.   

    xxxx.Perform(LB_SETHORIZONTALEXTENT,1000,0);
    看看这样可以不?
      

  2.   

    跟下面这一段差不多,去看看吧!
    procedure SetScrollBar(const Sender: TObject);
    var
      i, MaxWidth: integer;
    begin
      MaxWidth := 0;
      if (Sender is TListBox) then  //为TListBox类设置滚动条
      begin
        for i := 0 to (Sender as TListBox).Items.Count - 1 do
          if MaxWidth < (Sender as TListBox).Canvas.TextWidth((Sender as TListBox).Items.Strings[i]) then
            MaxWidth := (Sender as TListBox).Canvas.TextWidth((Sender as TListBox).Items.Strings[i]);
        SendMessage((Sender as TListBox).Handle, LB_SETHORIZONTALEXTENT, MaxWidth+2, 0);
      end
      else if (Sender is TCheckListBox) then  //为TCheckListBox类设置滚动条
      begin
        for i := 0 to (Sender as TCheckListBox).Items.Count - 1 do
          if MaxWidth < (Sender as TCheckListBox).Canvas.TextWidth((Sender as TCheckListBox).Items.Strings[i]) then
            MaxWidth := (Sender as TCheckListBox).Canvas.TextWidth((Sender as TCheckListBox).Items.Strings[i]);
        SendMessage((Sender as TCheckListBox).Handle, LB_SETHORIZONTALEXTENT, MaxWidth+2, 0);
      end;
    end;
      

  3.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    ListBox1.ScrollWidth:=ListBox1.Width+1;
    end;
    把ScrollWidth设置的比Width大就可以了