delphi – 如何使树视图重新考虑是否需要一个水平滚动条?

前端之家收集整理的这篇文章主要介绍了delphi – 如何使树视图重新考虑是否需要一个水平滚动条?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
考虑以下非常简单的单位:

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应用程序并运行.结果如下:

我想让水平滚动条不要显示.我该如何实现?

现在我意识到我可以删除分配很长的字符串的代码行.但这是一个针对我的问题的削减计划.在the real app the text of the nodes is changing,我想要滚动条显示是否需要,如果不需要,不显示.

我知道TVS_NOHSCROLL风格,但我不能使用.有时,树视图包含比可用空间更宽的文本.有时不是.

我也想使用TTreeView,不想使用虚拟树视图.不是我有任何反对虚拟树视图,只是我的应用程序当前正在使用TTreeView.

解决方法

很简单,使用TreeView1.Items.BeginUpdate / EndUpdate方法和滚动条将相应地计算.

喜欢这个:

...
 TreeView1.Items.BeginUpdate;
 // change your nodes here
 TreeView1.Items.EndUpdate

猜你在找的Delphi相关文章