TreeViewでスクロールバーを動かすには?

解決


  2006-05-17 00:02:56  No: 21562

お世話になります。
Delphi7を使用しているのですが、TreeViewで悩んでいるところがあるので
ご存知の方がいらっしゃればご教示ください。

TreeViewにアイテムを追加していたところ、一画面に収まりきれずに
スクロールバー(Y軸)を表示された時に、これをプログラムで制御する
ことは出来ないのでしょうか?
というのもアイテムが追加されたあとに、スクロールバーが一番下まで
下がってしまっているので一番上まで上げたいと思っています。

調べていたら、ScrollByというものがあったので使ってみたら
動きません。

TreeView.ScrollBy(0,-1000);

と試しに1000をセットしてみたのですが、TreeViewのスクロールバーは
まったく動きません。
使い方が間違っているのでしょうか?
また他に何かいい方法があればご教授ください。
宜しくお願い致します。


igy  2006-05-17 00:32:13  No: 21563

TopItem プロパティを指定するのはどうですか?


  2006-05-17 01:07:57  No: 21564

>igy様
ありがとうございます。

TreeView.Topitem.Selected := True;

で試してみましたが、駄目でした。
(面白いことに表示されている内で一番上にあるノードが選択されましたが(実Viewとしては中間辺りのNode))
書いてなかったのですが、問題のあるViewではLevel1のNodeが複数作られています。そこになにか問題があるのかと今考えています。
Level1のNodeが1つしかないViewの場合、いくら下にNodeが追加されたとしてもスクロールバーが下にずれていかないようです。


えーと  2006-05-17 01:20:38  No: 21565

> というのもアイテムが追加されたあとに、スクロールバーが一番下まで
> 下がってしまっているので一番上まで上げたいと思っています。

これを実現するために

> TreeView.Topitem.Selected := True;

なぜ、こんなことをするのか分かりません。ヘルプによれば

「TopItem プロパティを変更すると,指定したノードがリストビューの一番上になるようにツリービューが垂直方向にスクロールします。」

ということですから、一番上にスクロールするには、

procedure TForm1.Button1Click(Sender: TObject);
begin
  TreeView1.TopItem := TreeView1.Items[0];
end;

で、いいはずです。


  2006-05-17 02:08:29  No: 21566

>えーと様
ありがとうございます。
使い方を間違えていました。恥ずかしい限りです。
ご指摘のとおりのやり方で解決できました。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加