お世話になります。
Delphi7を使用しているのですが、TreeViewで悩んでいるところがあるので
ご存知の方がいらっしゃればご教示ください。
TreeViewにアイテムを追加していたところ、一画面に収まりきれずに
スクロールバー(Y軸)を表示された時に、これをプログラムで制御する
ことは出来ないのでしょうか?
というのもアイテムが追加されたあとに、スクロールバーが一番下まで
下がってしまっているので一番上まで上げたいと思っています。
調べていたら、ScrollByというものがあったので使ってみたら
動きません。
TreeView.ScrollBy(0,-1000);
と試しに1000をセットしてみたのですが、TreeViewのスクロールバーは
まったく動きません。
使い方が間違っているのでしょうか?
また他に何かいい方法があればご教授ください。
宜しくお願い致します。
TopItem プロパティを指定するのはどうですか?
>igy様
ありがとうございます。
TreeView.Topitem.Selected := True;
で試してみましたが、駄目でした。
(面白いことに表示されている内で一番上にあるノードが選択されましたが(実Viewとしては中間辺りのNode))
書いてなかったのですが、問題のあるViewではLevel1のNodeが複数作られています。そこになにか問題があるのかと今考えています。
Level1のNodeが1つしかないViewの場合、いくら下にNodeが追加されたとしてもスクロールバーが下にずれていかないようです。
> というのもアイテムが追加されたあとに、スクロールバーが一番下まで
> 下がってしまっているので一番上まで上げたいと思っています。
これを実現するために
> TreeView.Topitem.Selected := True;
なぜ、こんなことをするのか分かりません。ヘルプによれば
「TopItem プロパティを変更すると,指定したノードがリストビューの一番上になるようにツリービューが垂直方向にスクロールします。」
ということですから、一番上にスクロールするには、
procedure TForm1.Button1Click(Sender: TObject);
begin
TreeView1.TopItem := TreeView1.Items[0];
end;
で、いいはずです。
>えーと様
ありがとうございます。
使い方を間違えていました。恥ずかしい限りです。
ご指摘のとおりのやり方で解決できました。ありがとうございました。
ツイート | ![]() |