ども、Norimakiです。
今回はVirtualTreeViewの小技についてです。
DelphiのコンポーネントにListViewというコンポーネントがありまして、
ListViewにはMakeVisibleというメソッドがあります。
このメソッドは指定した行を見える部分に表示するというメソッドです。
項目内容を修正したりして、修正後にこの行を修正しましたよ。
ということをユーザーにわかりやすく示すために使用することが多いです。
そのMakeVisibleというメソッドがVirtualTreeViewにはありません。
ではどうするか?
というのが今回のテーマです。
結論から言いますが、VirtualTreeViewには ScrollIntoView という
メソッドがありまして、これを使います。
このメソッドはノードを指定して呼んであげると、
そのノードを見えるところに表示してくれます。
ただ、単に見えるところに表示してくれるだけで、
フォーカスとか選択状態などは変更してくれないので、
その必要がある場合はその処理もしなければいけません。
で、こんな感じになります。
1 2 3 4 5 |
VST:=VirtualStringTree; VST.Selected[P]:=True; VST.FocusedNode:=P; VST.ScrollIntoView(P,True); |
こんな感じです。
Pは対象となるノードのポインタです(PVirtualNode)。
どうも with が使えなくなりそうだという話もちらほら
耳に入ってきているので、with を使わないで書いてみました。
いつもなら、こういう風に書くんですが、
1 2 3 4 5 |
with VirtualStringTree do begin Selected[P]:=True; FocusedNode:=P; ScrollIntoView(P,True); end; |
これからは先のように書かないといけなくなるのかなと。そう思ったりしています。
というわけで、これでいけるらしいです。
で、ScrollIntoViewの引数は、
・対象ノード
・センターに移動するかフラグ(縦)
・センターに移動するかフラグ(横)
となっているようです。
また、カラムに対しても可能なようで、
引数として、
・カラムインデックス
・センター
を取るようです。
色々と調べてみるもんですね。
結構情報が拾えます。
クラスヘルパーにしておくのもいいかなと。
ではでは。
Norimakiでした。