考虑以下非常简单的单元:
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.
单元1.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 应用程序并运行。结果如下:
我希望水平滚动条不显示。我怎样才能实现这个目标?
现在我意识到我可以删除分配很长字符串的代码行。但这是为了我的问题而削减的计划。在真正的应用程序节点的文本正在改变 https://stackoverflow.com/questions/12693995/how-do-i-measure-the-width-available-for-text-in-a-tree-view-item我希望滚动条显示是否需要,如果不需要则不显示。
我知道关于TVS_NOHSCROLL http://msdn.microsoft.com/en-us/library/windows/desktop/bb760013.aspx风格,但我不能使用它。有时,树视图包含的文本比可用空间宽。有时不是。
我也想用TTreeView
并且不想使用虚拟树视图。并不是说我反对虚拟树视图,只是我的应用程序当前正在使用TTreeView
.
很简单,使用TreeView1.Items.BeginUpdate/EndUpdate
方法和滚动条将相应地计算。
像这样:
...
TreeView1.Items.BeginUpdate;
// change your nodes here
TreeView1.Items.EndUpdate
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)