Рассмотрим следующую очень простую единицу:
Unit1.pas
unit Unit1;
interface
uses
Windows, Classes, Controls, Forms, ComCtrls;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
SLongString = 'blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah';
procedure TForm1.FormCreate(Sender: TObject);
var
Node: TTreeNode;
begin
TreeView1.Width := 200;
Node := TreeView1.Items.Add(nil, SLongString);
Node.Text := 'blah';
end;
end.
Unit1.dfm
object Form1: TForm1
ClientHeight = 137
ClientWidth = 216
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object TreeView1: TTreeView
Left = 8
Top = 8
Width = 198
Height = 121
end
end
Добавьте это в приложение VCL Forms и запустите. Результат выглядит следующим образом:
Я бы хотел, чтобы горизонтальная полоса прокрутки не показывалась. Как я могу достичь этого?
Теперь я понимаю, что я могу удалить строку кода, которая назначает очень длинную строку. Но это сводная программа для моего вопроса. В реальном приложении меняется текст узлов, и я хочу, чтобы полосы прокрутки отображались, если они необходимы, и не показывают, если они не нужны.
Я знаю об TVS_NOHSCROLL
, но я не могу это использовать. Иногда древовидное представление содержит текст, который шире, чем доступное пространство. И иногда нет.
Я также хочу использовать TTreeView
и не хочу использовать виртуальное древовидное представление. Не то, чтобы у меня было что-то против виртуального древовидного представления, просто в моем приложении в настоящее время используется TTreeView
.