FolderView(ShellBrowser)リファレンス
Tablacus Explorer のファイルビュー(te.Ctrl(CTRL_FV) などで取得できる ShellBrowser オブジェクト)のリファレンスです。
- 以降、このオブジェクトを
FVと表記します。 - 関連: te リファレンス、api リファレンス
記法: P=プロパティ(
FV.Nameで読み、FV.Name = vで書く)、M=メソッド(FV.Name(...))。Columns/SortColumn/CurrentViewMode/FilterViewのように、実装がプロパティ・メソッド両方に対応するものは「P/M」と表記します。
目次
- 取得方法
- ナビゲーション
- 表示モード・設定
- アイテムの取得・選択
- 列・ソート・グループ・フィルタ
- ウィンドウ・タブ・関連オブジェクト
- アイテムの動的追加・削除(検索結果ビュー等)
- カスタマイズ用プロパティ
- 通知・内部用メソッド
- 定数
- 廃止・内部用
1. 取得方法
const FV = te.Ctrl(CTRL_FV); // 現在のタブのビュー
const arFV = te.Ctrls(CTRL_FV, true); // 表示中のビューすべて
const FV2 = te.CtrlFromWindow(hwnd); // hwnd から
const FV3 = te.CtrlFromPoint(pt); // 座標から
各イベント(OnBeforeNavigate など)の引数としても渡されます。
2. ナビゲーション
| 名前 | 種別 | 説明 |
|---|---|---|
Navigate(Path [, wFlags]) |
M | 指定のパス/FolderItem/FolderItems へ移動する。wFlags は SBSP_*(下記)。移動先が別のビューになった場合はそのビューを、そうでなければ自身を返す |
Navigate2(Path [, wFlags [, Type, ViewMode, FolderFlags, Options, ViewFlags, IconSize, TreeAlign, TreeWidth, TreeFlags, EnumFlags, RootStyle, Root]]) |
M | 表示設定を指定して移動する。第3引数以降は SB_* の並び順(下表)で指定(TreeAlign を 0 にするとそこで打ち切り=以降は既定値)。移動後のビュー(FV)を返す |
History |
P | 履歴を FolderItems で返す(現在位置が Index、最新が先頭)。History = Path は Navigate と同様に動作する |
FolderItem |
P(読み) | 現在表示中のフォルダ(FolderItem) |
Refresh([n]) |
M | 再読み込みする。n が0以外で非表示のビューなら、表示されたときに実行する |
NavigateComplete() |
M | ナビゲーション完了待ちの状態を解除し、必要ならビューウィンドウを表示する(内部処理用) |
Focus() |
M | このビューをアクティブにし、タブを切り替える |
Close() |
M | このタブを閉じる。結果を真偽値で返す(閉じられない場合の条件は要確認)。タブコントロールがロック中でなければ配置を更新する |
Suspend([mode]) |
M | ビューを破棄してメモリを解放する(タブは残す)。0/省略=通常、1=ツリーも閉じる、2=「利用不可」状態にする、4=軽量(m_nUnload=8) |
Navigate2 の引数順(第3引数以降):
| 順 | 引数 | 内容 |
|---|---|---|
| 1 | Type |
CTRL_SB(1)または CTRL_EB(2)。それ以外は CTRL_SB |
| 2 | ViewMode |
FVM_* |
| 3 | FolderFlags |
FWF_* |
| 4 | Options |
ExplorerBrowser オプション(EBO_*) |
| 5 | ViewFlags |
ビューフラグ(Tablacus 独自) |
| 6 | IconSize |
アイコンサイズ |
| 7 | TreeAlign |
ツリーの位置(0で無効) |
| 8 | TreeWidth |
ツリーの幅 |
| 9 | TreeFlags |
ツリーのフラグ |
| 10 | EnumFlags |
列挙フラグ(SHCONTF_*) |
| 11 | RootStyle |
ルートの表示方法 |
| 12 | Root |
ツリーのルート |
FV.Navigate("C:\\Windows", SBSP_SAMEBROWSER);
FV.Navigate(null, SBSP_PARENT | SBSP_SAMEBROWSER); // 上へ
FV.Navigate(null, SBSP_NAVIGATEBACK | SBSP_SAMEBROWSER); // 戻る
const newFV = FV.Navigate("C:\\", SBSP_NEWBROWSER); // 新しいタブ
3. 表示モード・設定
| 名前 | 種別 | 説明 |
|---|---|---|
Type |
P | CTRL_SB(1)か CTRL_EB(2)。変更するとレイアウトが再判定される(他の値は無視) |
CurrentViewMode |
P/M | ビューモード(FVM_*)。FV.CurrentViewMode = FVM_DETAILS |
SetViewMode(mode [, iconSize]) |
M | ビューモードを設定。2つ目を渡すとアイコンサイズも設定する。現在のビューモードを返す |
IconSize |
P | アイコンサイズ(px)。ビューが作成済みの場合に有効。変更時はシェルビューへ反映される |
FolderFlags |
P | FWF_*(フォルダ表示フラグ)。FWF_NOENUMREFRESH / FWF_USESEARCHFOLDER / FWF_SNAPTOGRID 以外のビットが変わるとビューへ反映される |
Options |
P | ExplorerBrowser のオプション(EBO_*)。CTRL_EB では設定が直接反映される |
ViewFlags |
P | Tablacus 独自のビューフラグ(保持するのみ。意味はスクリプト側の定義による) |
SizeFormat |
P | ファイルサイズの表示形式。変更時にリストが再描画される |
Title |
P | タブのタイトル(文字列)。取得時は & のエスケープを外して返す。タブが無いビューでは何も返らない |
Index |
P | タブ内の位置(0始まり)。代入するとタブを移動する |
Id |
P(読み) | ビューの識別番号(te.Ctrl(CTRL_FV, id) の id と対応する) |
SessionId |
P(読み) | 現在のフォルダのセッションID(ナビゲーションごとに変わる)。AddItem/AddItems の整合確認用 |
Parent |
P(読み) | 親オブジェクト(通常は所属する TabCtrl) |
Data |
P | スクリプトが自由に保持できる値 |
4. アイテムの取得・選択
| 名前 | 種別 | 説明 |
|---|---|---|
Items([flags [, bArray]]) |
M | ビューのアイテムを FolderItems で返す。flags は SVGIO_*(省略時 SVGIO_ALLVIEW \| SVGIO_FLAG_VIEWORDER)。bArray が真なら SafeArray を返す |
SelectedItems([bArray]) |
M | 選択中のアイテムを FolderItems で返す。bArray が真なら SafeArray |
ItemCount([flags]) |
M | アイテム数を返す。flags 省略時は SVGIO_ALLVIEW。SVGIO_SELECTION なら選択数 |
Item(index) |
M | index(0始まり、ビュー表示順)のアイテムを FolderItem で返す |
FocusedItem |
P(読み) | フォーカスのあるアイテム(FolderItem) |
GetFocusedItem() |
M | フォーカスのあるアイテムのインデックスを返す(整数) |
SelectItem(item, flags) |
M | アイテムを選択する。item は FolderItem・パス・インデックス(数値)・FolderItems。flags は SVSI_*。FolderItems を渡すと全件選択し、SVSI_FOCUSED などは先頭のみに適用される |
GetItemPosition(item, pt) |
M | アイテムの位置を pt(POINT のMemory)に書き込む。HRESULT を返す |
SelectAndPositionItem(item, flags, pt) |
M | アイテムを選択し、座標 pt へ配置する(アイコン表示用)。HRESULT を返す |
GetItemRect(item, rc [, type]) |
M | アイテムの矩形を rc(RECT のMemory)に書き込む(type は LVIR_*、省略時 LVIR_BOUNDS)。リストビューのあるビューのみ有効。HRESULT を返す |
HitTest(pt [, flags]) |
M | スクリーン座標 pt にあるアイテムのインデックスを返す(無ければ負値)。flags 省略時 LVHT_ONITEM。flags を省略した場合のみ、見つかったアイテムを FolderItem で返す |
ViewMenu([flags]) |
M | ビューのコンテキストメニュー(ContextMenu オブジェクト)を返す。flags 省略時は SVGIO_BACKGROUND(背景のメニュー) |
TranslateAccelerator(hwnd, msg, wParam, lParam) |
M | シェルビューにアクセラレータ処理を依頼する。HRESULT を返す |
const items = FV.SelectedItems();
for (let i = 0; i < items.length; ++i) {
const path = items[i].Path;
}
for (let i = 0; i < items.Count; ++i) {
const path = items.Item(i).Path;
}
FV.SelectItem(FV.Item(0), SVSI_SELECT | SVSI_FOCUSED | SVSI_ENSUREVISIBLE | SVSI_DESELECTOTHERS);
5. 列・ソート・グループ・フィルタ
| 名前 | 種別 | 説明 |
|---|---|---|
Columns |
P/M | 現在の列を文字列で返す(GetColumns(format) として使うと形式を指定できる)。文字列を代入すると列構成を設定する。シェルビュー(DefView)が未作成の間は何も返さない |
GetColumns([format]) |
M | Columns と同じ(取得用)。format で出力形式を指定 |
MapColumnToSCID(index, format) |
M | 列インデックスに対応するプロパティ名を返す |
SortColumn |
P/M | ソート列を文字列で返す(GetSortColumn(format) として使うと形式を指定できる)。文字列を代入するとソートする |
GetSortColumn([format]) |
M | SortColumn と同じ(取得用) |
GroupBy |
P | グループ化の列を文字列で取得/設定する |
AltSortColumn |
P | 代替ソート列(文字列)。ファイル列挙完了後に再適用される |
FilterView |
P/M | フィルタ文字列。プロパティ代入でフィルタ文字列を設定し OnFilterChanged を呼ぶ。メソッド呼び出し FV.FilterView("text")(または FV.Search("text"))は検索フィルタを実行する(OnFilterView が登録されていればそちらを先に呼ぶ) |
Search(text) |
M | FilterView のメソッド版(検索の実行) |
6. ウィンドウ・タブ・関連オブジェクト
| 名前 | 種別 | 説明 |
|---|---|---|
hwnd |
P(読み) | ビュー全体のウィンドウハンドル(api 関数に渡す) |
hwndView |
P(読み) | シェルビュー(DefView)のハンドル |
hwndList |
P(読み) | リストビュー(SysListView32)のハンドル |
hwndAlt |
P | 代替ウィンドウのハンドル。設定するとビュー領域に配置される |
TreeView |
P(読み) | このビューのツリー(CTRL_TV) |
ShellFolderView |
P(読み) | シェルのフォルダビュー(IShellFolderView)ディスパッチ |
Droptarget |
P(読み) | 現在のフォルダへのドロップターゲット(DropTarget オブジェクト) |
7. アイテムの動的追加・削除(検索結果ビュー等)
検索結果フォルダなど、プログラムでアイテムを制御するビュー用です。
| 名前 | 種別 | 説明 |
|---|---|---|
AddItem(item [, sessionId]) |
M | アイテムを1つ追加する。sessionId を指定した場合、現在の SessionId と一致しなければ失敗(E_ACCESSDENIED)する |
AddItems(items [, bDeleted [, OnCompleted]]) |
M | 配列/FolderItems のアイテムを別スレッドで追加する。bDeleted=真で追加ではなく削除として扱う。第3引数が関数オブジェクトなら完了時に呼ばれ、真偽値なら NavigateComplete を実行するか決める。ステータスバーに処理中メッセージが表示される |
RemoveItem(item) |
M | アイテムを削除する(検索結果ビュー等)。HRESULT を返す(S_OK で500ms後にステータス更新) |
RemoveAll() |
M | 全アイテムを削除する。戻り値は結果コード |
8. カスタマイズ用プロパティ
JavaScript のオブジェクトまたは関数を代入して、ビュー単位で動作を差し替えます。
| 名前 | 説明 |
|---|---|
TotalFileSize |
フォルダサイズのキャッシュ用オブジェクト。キーはパス、値は合計サイズ。ナビゲーションごとに新しい空のオブジェクトに置き換わる |
ColumnsReplace |
列名をキーに、列の表示内容を差し替えるオブジェクト。te.ColumnsReplace より優先される |
OnIncludeObject |
アイテムをフィルタするコールバック。FilterView を設定すると解除される |
AltSelectedItems |
SelectedItems の代替として扱う FolderItems。設定されていると ItemCount(SVGIO_SELECTION) がこの Count を返す |
9. 通知・内部用メソッド
| 名前 | 説明 |
|---|---|
Notify(event, item1 [, item2 [, bTotalFileSize]]) |
シェル変更通知(SHCNE_*)をビューに伝える。event が名前変更(SHCNE_RENAMEITEM/SHCNE_RENAMEFOLDER)なら item2 も使用。bTotalFileSize が真なら該当アイテムのフォルダサイズを再計算、偽/省略なら TotalFileSize のキャッシュを破棄して再描画 |
10. 定数
consts.js で定義されているものを掲載します。
SBSP_*(Navigate のフラグ)
SBSP_SAMEBROWSER = 1 / SBSP_NEWBROWSER = 2 / SBSP_OPENMODE = 0x10 / SBSP_EXPLOREMODE = 0x20 / SBSP_RELATIVE = 0x1000 / SBSP_PARENT = 0x2000 / SBSP_NAVIGATEBACK = 0x4000 / SBSP_NAVIGATEFORWARD = 0x8000 / SBSP_ACTIVATE_NOFOCUS = 0x80000 / SBSP_WRITENOHISTORY = 0x08000000
FVM_*(ビューモード)
FVM_AUTO = -1 / FVM_ICON = 1 / FVM_SMALLICON = 2 / FVM_LIST = 3 / FVM_DETAILS = 4 / FVM_THUMBNAIL = 5 / FVM_TILE = 6 / FVM_THUMBSTRIP = 7
SVSI_*(SelectItem のフラグ)
SVSI_DESELECT = 0 / SVSI_SELECT = 1 / SVSI_EDIT = 3 / SVSI_DESELECTOTHERS = 4 / SVSI_ENSUREVISIBLE = 8 / SVSI_FOCUSED = 0x10 / SVSI_TRANSLATEPT = 0x20 / SVSI_SELECTIONMARK = 0x40 / SVSI_POSITIONITEM = 0x80 / SVSI_CHECK = 0x100 / SVSI_CHECK2 = 0x200 / SVSI_KEYBOARDSELECT = 0x401 / SVSI_NOTAKEFOCUS = 0x40000000 / SVSI_NOSTATECHANGE = 0x80000000
SVGIO_*(Items/ItemCount/ViewMenu)
SVGIO_BACKGROUND = 0 / SVGIO_SELECTION = 1 / SVGIO_ALLVIEW = 2 / SVGIO_CHECKED = 3 / SVGIO_TYPE_MASK = 0xf / SVGIO_FLAG_VIEWORDER = 0x80000000
その他の FWF_*、EBO_*、LVHT_*、LVIR_*、SHCNE_* も consts.js にあります。
Type の値: CTRL_SB = 1(ShellBrowser)/ CTRL_EB = 2(ExplorerBrowser)。te.Ctrl(CTRL_FV) はどちらのビューも返します。
11. 廃止・内部用
| 名前 | 状態 |
|---|---|
NameFormat |
廃止。何もしない |
VirtualName |
廃止(SB_VirtualName) |
Searches / ViewProperty |
コード上でコメントアウトまたは USE_VIEWPROPERTY ビルドのみ。通常は使えない |