TabCtrl リファレンス
Tablacus Explorer のタブコントロール(CTRL_TC)のリファレンスです。
- タブコントロールは、複数のファイルビュー(FolderView)をタブとして保持します。
- 取得方法:
te.Ctrl(CTRL_TC)(現在のタブコントロール)、te.Ctrls(CTRL_TC)(全件)、FV.Parent(ビューの所属)、te.CreateCtrl(CTRL_TC, ...)(新規作成)。 - 関連: te リファレンス、api リファレンス、FolderView(ShellBrowser)リファレンス、FolderItems リファレンス、TreeView リファレンス
記法: P=プロパティ(
TC.Nameで読み、TC.Name = vで書く)、M=メソッド(TC.Name(...))。
目次
1. 取得方法
const TC = te.Ctrl(CTRL_TC); // 現在のタブコントロール
const arTC = te.Ctrls(CTRL_TC, true); // 表示中のタブコントロールすべて
const TC2 = FV.Parent; // ビューの所属タブコントロール
const TC3 = te.CreateCtrl(CTRL_TC, Left, Top, Width, Height); // 新規作成
te.CreateCtrl(CTRL_TC, ...) の引数は te リファレンス を参照してください。
2. 基本・タブの取得
| 名前 | 種別 | 説明 |
|---|---|---|
Type |
P(読み) | 常に CTRL_TC |
Data |
P | スクリプトが自由に保持できる値 |
hwnd |
P(読み) | タブコントロールのウィンドウハンドル |
Id |
P(読み) | タブコントロールの識別番号(te.Ctrl(CTRL_TC, id) の id に対応する) |
Count / length |
P(読み) | タブの数 |
Item(index) |
M | index(0始まり)のタブのビュー(FolderView)を返す。範囲外や未作成は空 |
_NewEnum |
P | 列挙用(for...in / Enumerator で全タブを列挙できる) |
TC[i] |
- | 数値添字でもタブを取得できる(Item(i) と同じ) |
for (let i = 0; i < TC.length; ++i) {
const FV = TC[i];
}
for (let i = 0; i < TC.Count; ++i) {
const FV = TC.Item(i);
}
for (const FV in TC) { /* ... */ }
3. タブの選択・操作
| 名前 | 種別 | 説明 |
|---|---|---|
Selected |
P | 選択中のタブのビュー(FolderView)を返す。ビューを代入すると、そのビューのタブ位置番号をこのタブコントロールで選択する(別のタブコントロールのビューを渡した場合も、そのビューの位置番号がそのまま使われる点に注意)。未作成のときは新しいビューを作成して返す |
SelectedIndex |
P | 選択中のタブの位置番号(0始まり)。代入すると選択を切り替える |
Move(src, dest [, TC2]) |
M | タブを移動する。Move(view, dest): 渡したビューのタブを、このタブコントロールの dest 番目へ移す(別のタブコントロールのビューでも可)。Move(src, dest [, TC2]): このタブコントロールの src 番目のタブを、TC2 の dest 番目へ移す(TC2 省略時はこのタブコントロール内で移動) |
SetOrder(arr) |
M | 配列に従ってタブを並べ替える。arr[i] に新しい並びでの i 番目に置く元の位置番号を指定する。長さがタブ数と一致しない場合は何もしない。選択位置は並べ替え後も同じタブを指す |
HitTest(pt [, flags]) |
M | スクリーン座標 pt の下にあるタブを調べる。flags は TCHT_*(省略時 TCHT_ONITEM)。flags 省略時はビュー(FolderView)を、指定時は位置番号(無ければ負値)を返す |
Close() |
M | タブコントロール自体を閉じる。含まれるすべてのビューが閉じられ、ウィンドウが破棄される。ナビゲーション中や閉じられない状態(ロック中のタブがある場合など。条件の詳細は要確認)は何もしない。タブの一部だけを閉じるには各 FV.Close() を使う |
Visible |
P | 表示/非表示。代入すると切り替わる(true で現在のタブコントロールに設定)。非表示時はウィンドウが非表示になる |
Selectedは、現在選択中の位置のビューが未作成なら新しくビューを作って返します。副作用に注意してください。
4. 位置・サイズ・スタイル
| 名前 | 種別 | 説明 |
|---|---|---|
Left / Top / Width / Height |
P | タブコントロール(ビュー領域全体)の位置とサイズ。数値はピクセル、"50%" のような文字列は割合。取得時は、割合指定なら "50%" 形式の文字列、ピクセル指定なら数値で返る。割合は100%を上限とし、0.01% 単位で保持される |
Style |
P | タブの Win32 スタイル(TCS_*)。TCS_SCROLLOPPOSITE / TCS_BUTTONS / TCS_TOOLTIPS が変わるとタブコントロールが作り直される |
Align |
P | タブの配置。0=なし(タブ非表示)、2=上、3=下、4=左、5=右。1 の意味は要確認(te.Tab が偽のときは常に「なし」として扱われる) |
TabWidth |
P | タブの幅(px)。左右配置(Align 4/5)ではタブ領域の幅としても使われる |
TabHeight |
P | タブの高さ(px) |
Alignが4/5でTCS_SCROLLOPPOSITEのとき、自動的にTCS_BUTTONSが付加されます。TCS_BUTTONS有効かつAlignが2より大きいときはTCS_BOTTOMが外れます。TCS_SCROLLOPPOSITEは、TCS_BUTTONSが有効、またはTCS_MULTILINEが無効のとき無視されます。Left/Top/Width/Height/Style/Align/TabWidth/TabHeightの変更はすぐに再配置に反映されます。
TC.Left = "0%";
TC.Width = "50%"; // 画面の半分
TC.Align = 2; // タブを上に
TC.TabHeight = 28;
5. 更新の制御
| 名前 | 種別 | 説明 |
|---|---|---|
LockUpdate() |
M | このタブコントロールの再配置を一時停止する(カウンタ式) |
UnlockUpdate() |
M | LockUpdate を解除する。カウンタが0に戻ると再配置される |
タブを大量に開く/閉じるときは、LockUpdate と UnlockUpdate で囲むと画面の更新が1回で済みます(メインウィンドウ全体の制御は te.LockUpdate)。
TC.LockUpdate();
try {
for (const path in paths) {
TC.Selected.Navigate(path, SBSP_NEWBROWSER);
}
} finally {
TC.UnlockUpdate();
}
6. 定数
consts.js で定義されています。
TCHT_*(HitTest の flags)
TCHT_NOWHERE = 1 / TCHT_ONITEMICON = 2 / TCHT_ONITEMLABEL = 4 / TCHT_ONITEM = 6
TCS_*(Style)
TCS_TABS = 0 / TCS_BUTTONS = 0x100 / TCS_SINGLELINE = 0 / TCS_MULTILINE = 0x200 / TCS_RIGHTJUSTIFY = 0 / TCS_FIXEDWIDTH = 0x400 / TCS_RAGGEDRIGHT = 0x800 / TCS_FOCUSONBUTTONDOWN = 0x1000 / TCS_OWNERDRAWFIXED = 0x2000 / TCS_TOOLTIPS = 0x4000 / TCS_FOCUSNEVER = 0x8000 / TCS_SCROLLOPPOSITE = 1 / TCS_BOTTOM = 2 / TCS_RIGHT = 2 / TCS_MULTISELECT = 4 / TCS_FLATBUTTONS = 8 / TCS_FORCEICONLEFT = 0x10 / TCS_FORCELABELLEFT = 0x20 / TCS_HOTTRACK = 0x40 / TCS_VERTICAL = 0x80
CTRL_TC
CTRL_TC = 0x30000(Type が返す値)
7. 使用例
const TC = te.Ctrl(CTRL_TC);
// 全タブのパスを列挙
for (let i = 0; i < TC.length; ++i) {
const FV = TC[i];
const path = FV.FolderItem.Path;
}
// 全タブのパスを列挙2
for (let i = 0; i < TC.Count; ++i) {
const FV = TC.Item(i);
const path = FV.FolderItem.Path;
}
// 新しいタブで開く
const FV = TC.Selected.Navigate("C:\\Windows", SBSP_NEWBROWSER);
// タブを切り替える・移動する
TC.SelectedIndex = 0;
TC.Move(TC.Selected, 0); // 選択中のタブを先頭へ
// 逆順に並べ替え
const order = [];
for (let i = TC.Count; i--;) {
order.push(i);
}
TC.SetOrder(order);
// マウス位置のタブを取得 (flags 省略でビューが返る)
const pt = api.Memory("POINT");
api.GetCursorPos(pt);
const target = TC.HitTest(pt);
if (target) {
target.Close();
}