次の非常に単純な単位について考えてみます。
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フォームアプリに追加して実行します。結果は次のようになります。
横スクロールバーを表示しないようにしたいと思います。どうすればこれを達成できますか?
これで、非常に長い文字列を割り当てるコード行を削除できることに気付きました。しかし、これは私の質問のための削減プログラムです。実際のアプリでは、ノードのテキストが変化しているので、スクロールバーに必要な場合は表示し、不要な場合は表示しないようにします。
スタイルは知っていTVS_NOHSCROLL
ますが使えません。ツリービューに、使用可能なスペースよりも広いテキストが含まれている場合があります。そして時々そうではありません。
またTTreeView
、仮想ツリービューを使用したいのですが、使用したくありません。仮想ツリービューに対して何かがあるわけではなく、アプリが現在使用しているだけですTTreeView
。