TabCtrl リファレンス

Tablacus Explorer のタブコントロール(CTRL_TC)のリファレンスです。

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

目次

  1. 取得方法
  2. 基本・タブの取得
  3. タブの選択・操作
  4. 位置・サイズ・スタイル
  5. 更新の制御
  6. 定数
  7. 使用例

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)
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();
}

関連