TreeView リファレンス

Tablacus Explorer のフォルダツリー(CTRL_TV)のリファレンスです。

記法: P=プロパティ(TV.Name で読み、TV.Name = v で書く)、M=メソッド(TV.Name(...))。

目次

  1. 取得方法
  2. 基本・表示
  3. ルート・列挙設定
  4. 選択・展開・操作
  5. 位置・ヒットテスト・通知
  6. ツリー関連イベント(参考)
  7. 定数
  8. 使用例
  9. 旧バージョン互換メンバー

1. 取得方法

const TV = FV.TreeView;               // ビューのツリー
const TV2 = te.Ctrl(CTRL_TV);         // 現在のビューのツリー
const arTV = te.Ctrls(CTRL_TV, true); // 表示中のツリーすべて
const TV3 = te.CreateCtrl(CTRL_TV);   // 新規作成

重要: ツリーが非表示(Align のビット2が立っていない)のとき、多くのメンバーは値を返さず S_FALSE(何もしない)になります。例外は Root / SetRoot / Align / Visible / Width / Style / EnumFlags / RootStyle / Data / Type / hwnd / Close などです。使う前に TV.Visible で表示状態を確認してください。


2. 基本・表示

名前 種別 説明
Type P(読み) 常に CTRL_TV を返す
Data P スクリプトが自由に保持できる値
hwnd P(読み) ツリーを含むウィンドウのハンドル
hwndTree P(読み) ツリービューコントロール本体(SysTreeView32)のハンドル
FolderView P(読み) このツリーが属する FolderView。属するビューが無ければ現在のビューを返す
Align P 配置(SB_TreeAlign)。ビット2(値2)が立っていると表示。代入すると再配置し表示を更新する。旧仕様でVisibleの使用を推奨
Visible P 表示状態。代入は true で Align = 3、false で Align = 1。変更されたときは OnVisibleChanged が呼ばれる。取得はビット2の有無を返す
Width P ツリーの幅(px)
Style P ツリーのスタイル(NSTCS_*)。変更するとツリーが再作成される
Close() M ツリーを閉じる(Align を 0 にして破棄)
Focus() M ツリー(hwndTree)にフォーカスを移す
Refresh() M ルートの再設定を約100ms後に予約して再読み込みする

Width / Style / EnumFlags / RootStyle は、ツリーが非表示でも読み書きできます。Width と Style の変更はツリー全体(以降に作られるツリー)の既定値としても保存されます。Style / EnumFlags / RootStyle の変更時は、ツリーが閉じられて再作成されます。


3. ルート・列挙設定

名前 種別 説明
Root P ルートの設定値(文字列)。読み取りは現在のルート(文字列)、代入は SetRoot と同等
SetRoot(root [, enumFlags [, rootStyle]]) M ツリーのルートを設定する。root はパス/FolderItem/ルートを表す文字列等。enumFlags・rootStyle を渡すと、列挙フラグとルート表示形式も変更する。省略すると既定値(FV の既定)に戻る
EnumFlags P 列挙フラグ(SHCONTF_*)。隠しファイルの表示/非表示等を指定する
RootStyle P ルートの表示形式(NSTCRS_*)
TV.SetRoot("C:\\Users", SHCONTF_FOLDERS, NSTCRS_VISIBLE);

4. 選択・展開・操作

名前 種別 説明
SelectedItem P(読み) 選択中のアイテム(FolderItem)。無ければ空
SelectedItems() M 選択中のアイテムを FolderItems で返す
Expand(item, bExpand) M アイテムを選択し、bExpand が 0 以外なら展開する。処理は約100ms後に実行される。空/ルート/検索フォルダは無視される。「インターネット」配下は te.ShowInternet が偽のとき親まで遡って扱われる
TV.Expand(FV.FolderItem, 1);   // 現在のフォルダを選択して展開

5. 位置・ヒットテスト・通知

名前 種別 説明
HitTest(pt [, flags]) M スクリーン座標 pt にあるアイテムを返す。flags は TVHT_*(省略時は TVHT_ONITEM、NSTCS_FULLROWSELECT が有効なら TVHT_ONITEM \| TVHT_ONITEMRIGHT)。flags を省略した場合は FolderItem、指定した場合はアイテムのハンドル(HTREEITEM)を返す。無ければ 0
GetItemRect(item, rc) M アイテムの矩形を rc(RECT の Memory)に書き込む(api.Memory("RECT"))。成功は S_OK(0)
Notify(event, item, ...) M シェル変更通知(SHCNE_*)をツリーに伝える。event が追加系(SHCNE_MKDIR / SHCNE_MEDIAINSERTED / SHCNE_DRIVEADD / SHCNE_NETSHARE)の場合、親が展開済みなら新しい項目を表示する。削除系(SHCNE_RMDIR / SHCNE_DRIVEREMOVED / SHCNE_MEDIAREMOVED / SHCNE_NETUNSHARE / SHCNE_RENAMEFOLDER ほか)の場合は該当項目を除去する。最低 3 つの引数が必要(event, item1, ...)

6. ツリー関連イベント(参考)

te.OnItemClick はツリーのクリックでも呼ばれ、実装上の引数は (Ctrl=TreeView, Item=FolderItem, HitTest, Flags) の順です(HitTest は NSTCEHITTEST、Flags は NSTCSTYLE)。戻り値が返ればその値(HRESULT)が採用されます。OnSelectionChanged・OnVisibleChanged も TreeView を引数に呼ばれます。


7. 定数

consts.js で定義されています。

NSTCS_*(Style) NSTCS_HASEXPANDOS = 1 / NSTCS_HASLINES = 2 / NSTCS_SINGLECLICKEXPAND = 4 / NSTCS_FULLROWSELECT = 8 / NSTCS_SPRINGEXPAND = 0x10 / NSTCS_HORIZONTALSCROLL = 0x20 / NSTCS_ROOTHASEXPANDO = 0x40 / NSTCS_SHOWSELECTIONALWAYS = 0x80 / NSTCS_NOINFOTIP = 0x200 / NSTCS_EVENHEIGHT = 0x400 / NSTCS_NOREPLACEOPEN = 0x800 / NSTCS_DISABLEDRAGDROP = 0x1000 / NSTCS_NOORDERSTREAM = 0x2000 / NSTCS_RICHTOOLTIP = 0x4000 / NSTCS_BORDER = 0x8000 / NSTCS_NOEDITLABELS = 0x10000 / NSTCS_TABSTOP = 0x20000 / NSTCS_FAVORITESMODE = 0x80000 / NSTCS_AUTOHSCROLL = 0x100000 / NSTCS_FADEINOUTEXPANDOS = 0x200000 / NSTCS_EMPTYTEXT = 0x400000 / NSTCS_CHECKBOXES = 0x800000 / NSTCS_PARTIALCHECKBOXES = 0x1000000 / NSTCS_EXCLUSIONCHECKBOXES = 0x2000000 / NSTCS_DIMMEDCHECKBOXES = 0x4000000 / NSTCS_NOINDENTCHECKS = 0x8000000 / NSTCS_ALLOWJUNCTIONS = 0x10000000 / NSTCS_SHOWTABSBUTTON = 0x20000000 / NSTCS_SHOWDELETEBUTTON = 0x40000000 / NSTCS_SHOWREFRESHBUTTON = 0x80000000

SHCONTF_*(EnumFlags) SHCONTF_CHECKING_FOR_CHILDREN = 0x10 / SHCONTF_FOLDERS = 0x20 / SHCONTF_NONFOLDERS = 0x40 / SHCONTF_INCLUDEHIDDEN = 0x80 / SHCONTF_INIT_ON_FIRST_NEXT = 0x100 / SHCONTF_NETPRINTERSRCH = 0x200 / SHCONTF_SHAREABLE = 0x400 / SHCONTF_STORAGE = 0x800 / SHCONTF_NAVIGATION_ENUM = 0x1000 / SHCONTF_FASTITEMS = 0x2000 / SHCONTF_FLATLIST = 0x4000 / SHCONTF_ENABLE_ASYNC = 0x8000 / SHCONTF_INCLUDESUPERHIDDEN = 0x10000

NSTCRS_*(RootStyle) NSTCRS_VISIBLE = 0 / NSTCRS_HIDDEN = 1 / NSTCRS_EXPANDED = 2

TVHT_*(HitTest) TVHT_NOWHERE = 1 / TVHT_ONITEMICON = 2 / TVHT_ONITEMLABEL = 4 / TVHT_ONITEMINDENT = 8 ほか(consts.js 参照)


8. 使用例

const FV = te.Ctrl(CTRL_FV);
const TV = FV.TreeView;

// 表示/非表示
TV.Visible = true;
TV.Width = 250;

// ルートを設定
TV.SetRoot("C:\\", SHCONTF_FOLDERS | SHCONTF_INCLUDEHIDDEN, NSTCRS_VISIBLE);

// 現在のフォルダを展開して選択
TV.Expand(FV.FolderItem, 1);

// マウス位置のアイテムを取得 (flags 省略で FolderItem が返る)
const pt = api.Memory("POINT");
api.GetCursorPos(pt);
const item = TV.HitTest(pt);
if (item) {
    FV.Navigate(item, SBSP_SAMEBROWSER);
}

9. 旧バージョン互換メンバー

次のメンバーは、現在のビルド(NameSpaceTreeControl を使用)の実装では専用の処理が見当たらず、呼び出しても値は返りません(メンバーが見つからないエラーになる場合があります)。Windows 2000 / XP 向けの旧ビルドで使われていた IShellNameSpace コントロール由来の名前で、旧ビルドでの挙動は要確認です。新規スクリプトでは使用しないでください。

CountViewTypes Depth EnumOptions Export Flags Import Mode ResetSort SetViewType Synchronize TVFlags Columns

関連