TreeView ActiveX コントロール

"Microsoft TreeView Control 6.0 (SP4)" "MSComctlLib.TreeCtrl.2" "{C74190B6-8589-11D1-B16A-00C0F0283628}"
注:

ActiveX コントロールは、DotNet フレームワークとそのコントロールを考慮して、最新バージョンの Microsoft Windows オペレーティング システムで非推奨となりました。

MAXScript では引き続き ActiveX コントロールがサポートされますが、これらは MAXScript にアクセス可能なシステムにインストールおよび登録する必要があります。

ActiveX コントロールの代わりに、MAXScript では、3ds Max 9 以降において DotNet コントロールがサポートされます。

既存の ActiveX コードを DotNet に切り替える例につては、「ActiveX ListView コントロールの DotNet ListView コントロールへの変換」を参照してください。

説明:

TreeView ActiveX コントロール は、MAXScript ロールアウトで最も頻繁に使用する ActveX コントロールの 1 つです。このコントロールは非常に柔軟でカスタマイズすることができるため、この章で詳細に説明します。これは、ノード ツリーと階層表示の作成に使用できます。

3ds Max ユーザ インタフェースで使用する TreeView コントロールの例として、[名前付き選択セット]ダイアログ ボックスが挙げられます。

コンストラクタ:

activeXControl tv "MSComctlLib.TreeCtrl"

プロパティ:

TreeView ノード:

.Nodes : Nodes

TreeView で表現されるノードの配列を取得/設定します。

.Nodes プロパティ:

.Nodes.Count : integer

.Nodes 配列のノードの数を返します。

.Nodes[Index:undefined] : INode

インデックスによるアクセスを使用し、配列からノードにアクセスできます。インデックスの基数は 1 です。

このプロパティで返されるノードには、独自のプロパティとメソッドがあります。 これについては 「TreeView ノードのプロパティおよびメソッド」 で説明します。

例:

    first_node = tv.Nodes[1]
    --returns the first node in the TreeView stored in the variable tv.
    showProperties first_node --show node properties
    showMethods first_node --show methods applicable to TreeView nodes

.Nodes メソッド:

.Add Relative:undefined Relationship:undefined Key:undefined Text:undefined Image:undefined SelectedImage:undefined

.Nodes 配列に新しいノードを追加し、結果として新しいノードを返します。

同じメソッドを使用し、既存のノードに子を追加して階層を構築できます。チュートリアル「TreeView ActiveX コントロールを使用したシーン ブラウザの開発 - 第 1 部」の例を参照してください。

このメソッドによって返されるノードには、独自のプロパティとメソッドがあります。 これについては、「TreeView ノードのプロパティおよびメソッド」で説明します。

.Clear()

TreeView コントロールの .Nodes 配列からすべてのノードを削除します。

.Remove Index:undefined

インデックスにより、1 つのノードを削除します。インデックスは、基数 1 です。

._NewEnum()

IVBDataObject を返します。

TreeView レイアウト

次のプロパティでは、TreeView コントロールのレイアウトと外観を制御します。

.LineStyle : TreeLineStyleConstants( #tvwTreeLines | #tvwRootLines )

階層内のノードをつなぐ線のスタイルを制御します。#tvwTreeLines モードでは、接続線がないルート ノードが表示され、その子の間でのみ線が描画されます。#tvwRootLines では、ルート レベル ノードとその子が線で接続されます。以下でその違いを説明します。

.Style : TreeStyleConstants( #tvwTextOnly | #tvwPictureText | #tvwPlusMinusText | #tvwPlusPictureText | #tvwTreelinesText | #tvwTreelinesPictureText | #tvwTreelinesPlusMinusText | #tvwTreelinesPlusMinusPictureText )

ツリー表示のスタイルを制御します。

以下は、アイコンを含まない、典型的な 4 つのスタイルを示しています。

アイコンを有効にすると、線、プラス記号、マイナス記号、およびテキスト ラベルの間にアイコンが表示されます。

.Appearance : AppearanceConstants( #ccFlat | #cc3D )

TreeView コントロールの外観を制御します。#cc3D は既定値です。

.BorderStyle : BorderStyleConstants( #ccNone | #ccFixedSingle )

.Appearance#ccFlat に設定されている場合に境界スタイルをコントロールします。#ccFixedSingle に設定した場合、単一ピクセルの境界線が TreeView の周囲に描かれます。

.Indentation : float

Twips のインデント値を取得および設定します。この値では、親を基準にして子をどれだけインデントするかを制御します。ピクセル(420 twips)以下の値ではインデントされず、プラス記号とマイナス記号が小さく表示されることに注意してください。

次のスクリーンショットは、10 ピクセル、28 ピクセル、40 ピクセル、60 ピクセルのインデントを表しています。

.Checkboxes : boolean

true に設定すると、それぞれのノードの前にチェックボックスが表示されます。false (既定値)に設定すると、チェックボックスは表示されません。

.PathSeparator : string

ノードの .FullPath プロパティが使用するパス セパレータ文字列を定義します。たとえば、値を「>」に設定し、ノード「ROOT」の子ノード「Box01」の子ノード「Sphere01」の .FullPath プロパティを取得すると、パス文字列「ROOT>Box01>Sphere01」が返されます。

.Enabled : boolean

true に設定すると、TreeView が編集可能になります。false に設定すると、TreeView にはノードが表示されますが、TreeView をインタラクティブに操作することはできません。2 つのモードに視覚的な差異はありません。

.DropHighlight : INode

このプロパティに TreeView ノードを割り当てると、TreeView はハイライト表示されます(選択されたように表示されますが、選択状態フラグは設定されません)。ハイライトは選択ハイライトの影響を受けず、DropHighlight が未定義に設定されるまで、指定したノードはハイライト表示されます。

.LabelEdit : LabelEditConstants( #tvwAutomatic | #tvwManual )

ラベル(ノードのテキスト)の編集を制御します。既定は #tvwAutomatic です。自動の場合、ユーザはノードを単純に選択して再度クリックし、ラベルを編集できます。手動の場合、開発者が、以下で説明する StartLabelEdit() メソッドを使用してラベルの編集を始める必要があります。

.Scroll : boolean

true (既定値)に設定すると、ツリーが TreeView 領域に収まらない場合、水平スクロールバーと垂直スクロールバーが表示されます。false に設定した場合、スクロールバーは表示されません。

.Font : IFontDisp

TreeView で使用するフォントを定義します。MAXScript では設定できません。

TreeView 選択

次のプロパティでは、TreeView コントロールにおけるノードの選択にアクセスして制御できます。

.SelectedItem : INode

現在選択されているノードを返します。

.HideSelection : Boolean

true に設定した場合、選択は表示されません。false に設定した場合、選択が表示されます。

.FullRowSelect : boolean

true に設定した場合、行全体が選択されます。

.HotTracking : boolean

true に設定した場合、マウスが ListItems の上に移動すると、ListItems がハイライト表示されますfalse (既定値)に設定した場合、ListItem の上にマウスを移動しても影響はありません。

.SingleSel : boolean

true (既定値)に設定した場合、新しい分岐を選択すると、それまでに展開されていた分岐が自動的に縮小されます。false に設定した場合、複数の分岐を同時に開くことができます。

TreeView イメージ

.ImageList : IVBDataObject

アイコンとして使用されるすべてのイメージが保存されている配列です。ImageList ActiveX コントロールによって提供できる IVBDataObject (Visual Basicデータ オブジェクト)を要求します。実例については、「チュートリアル - TreeView ActiveX コントロールを使用したシーン ブラウザの開発 - 第 2 部」を参照してください。

TreeView マウス ポインタ

.MousePointer : MousePointerConstants( #ccDefault | #ccArrow | #ccCross | #ccIBeam | #ccIcon | #ccSize | #ccSizeNESW | #ccSizeNS | #ccSizeNWSE | #ccSizeEW | #ccUpArrow | #ccHourglass | #ccNoDrop | #ccArrowHourglass | #ccArrowQuestion | #ccSizeAll | #ccCustom)

マウス ポインタが ListView Control の上にある場合のマウス ポインタのタイプを取得/設定します。スクリプト開発者は、このページで詳しく説明するマウス イベントを使用し、基礎となる内容か許可されているアクションによってマウス ポインタを変更できます。

.MouseIcon : IPictureDisp

マウス アイコンを IPictureDisp 値で返します。MAXScript では設定できません。

TreeView のソート

.Sorted : boolean

false (既定値)に設定した場合、ノードは、.Nodes 配列に追加された順序で表示されます。

true に設定した場合、ノードはアルファベット順にソートされます。

ドラッグ アンド ドロップの動作

.OLEDragMode : OLEDragConstants( #ccOLEDragManual | #ccOLEDragAutomatic )

OLE Drag モードを制御します。手動に設定すると、スクリプト メソッド .OLEDrag() のみによってドラッグを開始できます。自動に設定すると、ユーザはリストからノードをドラッグできます。

.OLEDropMode : OLEDropConstants( #ccOLEDropNone | #ccOLEDropManual))

OLE Drop モードを制御します。

Windows メッセージ

.hWnd : OLE_HANDLE

メソッド

.HitTest x:float y:float

指定した X 座標と Y 座標でヒット テストを実行します。

.GetVisibleCount()

表示ノードの数を返します。

.StartLabelEdit()

現在選択しているノードのラベル編集を手動で開始します。

.Refresh()

TreeView 表示をリフレッシュします。

.OLEDrag()

OLE Drag を手動で開始します。

イベント

on <control_name> BeforeLabelEdit Cancel:integer do ( ... )

ラベル編集を開始する前に呼び出されます。

on <control_name> AfterLabelEdit Cancel:integer NewString:string do ( ... )

ラベル編集を終了した後に呼び出されます。

on <control_name> Collapse Node:Node do ( ... )

ノードが縮小されたときに呼び出されます。引数には、縮小されたノードが含まれます。

on <control_name> Expand Node:Node do ( ... )

ノードが展開されたときに呼び出されます。引数には、展開されたノードが含まれます。

on <control_name> NodeClick Node:Node do ( ... )

ノードがクリックされたときに呼び出されます。引数には、クリックされたノードが含まれます。

on <control_name> KeyDown KeyCode:integer Shift:integer do ( ... )

ユーザがキーを押したときに呼び出されます。KeyCode 引数には押されたキーの整数コードが含まれ、Shift 引数には[Shift]、[Ctrl]、および[Alt]キーが押されているかどうかを示すビットから成る整数値が含まれます。ビット 1 が[Shift]キー、ビット 2 が[Ctrl]キー、ビット 3 が[Alt]キーを表します。

0 - モディファイヤ キーは押されていません。

1 - 左または右の[Shift]キーが押されました。

2 - 左または右の[Ctrl]キーが押されました。

3 - [Ctrl] + [Shift]キーが同時に押されました。

4 - 左または右の[Alt]キーが押されました。

6 - [Ctrl] + [Alt]キーが同時に押されました。

7 - [Ctrl]、[Alt]、[Shift]キーが同時に押されました。

MAXScript 構文の例:

    on tv keyDown theKeyCode theShiftState do
    (
    format "Key Code is %, Shift State is %\n" theKeyCode theShiftState
    )
    --where tv is the name of the ActiveX TreeView,
    --theKeyCode and theShiftState are user-defined variable names.
on <control_name> KeyUp KeyCode:integer Shift:integer do ( ... )

ユーザがキーを放したときに呼び出されます。KeyCode 引数には放したキーの整数コードが含まれ、Shift 引数には[Shift]、[Ctrl]、および[Alt]キーが押されているかどうかを示すビットから成る整数値が含まれます。上記を参照してください。

on <control_name> KeyPress KeyAscii:integer do ( ... )

ユーザがキーを押したときに呼び出されます。KeyAscii 引数には、押されたキーの ASCII 整数コードが含まれます。たとえば、[スペース]を押すと 32 が、[Shift]+[A]を押すと 65 が返されます。

on <control_name> MouseDown Button:integer Shift:integer x:OLE_XPOS_PIXELS y:OLE_YPOS_PIXELS do ( ... )

ユーザがマウスで TreeView をクリックしたときに呼び出されます。

Button 引数には、マウスのボタンに対応するビットから成る整数値が含まれます。ビット 1 は左マウス ボタンを、ビット 2 は右マウス ボタンを、ビット 3 は中央のマウス ボタンまたはホイールを表します。

1 - 左マウス ボタンが押されました。

2 - 右マウス ボタンが押されました。

4 - 中央のマウス ボタンまたはホイールが押されました。

注:

複数のマウス ボタンを同時に押しても値は追加されず、それぞれのボタンの個別イベントが生成されます。

Shift 引数には、先に説明したとおり、[Shift]、[Ctrl]、および[Alt]キーの状態が含まれます。

x 引数 および y 引数には、TreeView ピクセル座標(twip ではありません)におけるクリックの位置が含まれます。ここで、0,0 は TreeView コントロールの左上隅になります。

例:

    rollout test "Test"
    (
    activeXControl tv "MSComctlLib.TreeCtrl" height:100 width:100
    on tv MouseDownButton Shift x y do
    format "Button: %, Shift: %, xy: %,%\n" Button Shift x y
    )
    createDialog test
on <control_name> MouseMove Button:integer Shift:integer x:OLE_XPOS_PIXELS y:OLE_YPOS_PIXELS do ( ... )

ユーザが TreeView コントロール内にマウスを移動したときに呼び出されます。

Button 引数には、マウスのボタンに対応するビットから成る整数値が含まれます。ビット 1 は左マウス ボタンを、ビット 2 は右マウス ボタンを、ビット 3 は中央のマウス ボタンまたはホイールを表します。

1 - 左マウス ボタンが押されました。

2 - 右マウス ボタンが押されました。

4 - 中央のマウス ボタンまたはホイールが押されました。

注:

複数のマウス ボタンを同時に押しても値は追加されず、それぞれのボタンの個別イベントが生成されます。

Shift 引数には、先に説明したとおり、[Shift]、[Ctrl]、および[Alt]キーの状態が含まれます。

x 引数 および y 引数には、TreeView ピクセル座標(twip ではありません)におけるクリックの位置が含まれます。ここで、0,0 は TreeView コントロールの左上隅になります。

例:

    --This script will print the mouse values
    --while you move the mouse inside the ListView control
    rollout test "Test"
    (
    activeXControl tv "MSComctlLib.TreeCtrl" height:100 width:100
    on tv MouseMove Button Shift x y do
    format "Button: %, Shift: %, xy: %,%\n" Button Shift x y
    )
    createDialog test
on <control_name> MouseUp Button:integer Shift:integer x:OLE_XPOS_PIXELS y:OLE_YPOS_PIXELS do ( ... )

ユーザが TreeView コントロール上でマウスを放したときに呼び出されます。

Button 引数には、マウスのボタンに対応するビットから成る整数値が含まれます。ビット 1 は左マウス ボタンを、ビット 2 は右マウス ボタンを、ビット 3 は中央のマウス ボタンまたはホイールを表します。

1 - 左マウス ボタンが押されました。

2 - 右マウス ボタンが押されました。

4 - 中央のマウス ボタンまたはホイールが押されました。

注:

複数のマウス ボタンを同時に押しても値は追加されず、それぞれのボタンの個別イベントが生成されます。

Shift 引数には、先に説明したとおり、[Shift]、[Ctrl]、および[Alt]キーの状態が含まれます。

x および y 引数には、TreeView ピクセル座標(twip ではありません)におけるクリックの位置が含まれます。ここで、0,0 は TreeView コントロールの左上隅になります。

例:

    rollout test "Test"
    (
    activeXControl tv "MSComctlLib.TreeCtrl" height:100 width:100
    on tv MouseUpButton Shift x y do
    format "Button: %, Shift: %, xy: %,%\n" Button Shift x y
    )
    createDialog test
on <control_name> Click do ( ... )

ユーザが TreeView コントロール内部をクリックしたときに呼び出されます。このイベントは、特定の TreeView ノードを返しませんが、すべてのノードの選択状態かその他のプロパティの問い合わせに使用できます。これは、ユーザが ListView をクリックしたという一般的な通知であり、イベントによって行われる実際のアクションは、スクリプト開発者が指定できます。

on <control_name> DblClick do ( ... )

ユーザが TreeView コントロール内部をダブルクリックしたときに呼び出されます。

on <control_name> NodeCheck Node:Node do ( ... )

ユーザがノードのチェックボックスの状態を変更したときに呼び出されます(プロパティ .checkboxes = true であるため、チェックボックスは表示される必要があります)。

Node 引数には、チェックボックスが変更されたノードが含まれます。変更されたノードの .checked プロパティにアクセスすると、新しい状態にアクセスできます。text や .index など、その他のノード プロパティにもアクセスできます。TreeView ノードのプロパティおよびメソッド を参照してください。

on <control_name> OLEStartDrag &Data:DataObject &AllowedEffects:integer do ( ... )

ユーザが ListView コントロールからドラッグを始めたときに呼び出されます。

on <control_name> OLEGiveFeedback &Effect:integer &DefaultCursors:boolean do ( ... )

ユーザが ListView コントロールからドラッグを始めたときに呼び出されます。

on <control_name> OLESetData &Data:DataObject &DataFormat:integer do ( ... )
on <control_name> OLECompleteDrag &Effect:integer do ( ... )
on <control_name> OLEDragOver &Data:DataObject &Effect:integer &Button:integer &Shift:integer &x:float &y:float &State:integer do ( ... )
on <control_name> OLEDragDrop &Data:DataObject &Effect:integer &Button:integer &Shift:integer &x:float &y:float do ( ... )

TreeView ノードのプロパティおよびメソッド

次のプロパティおよびメソッドは、単一の TreeView ノードに対して使用できます。

単一のノードを取得するには、.Nodes 配列にインデックスでアクセスするか、.Nodes.Add() メソッドの戻り値を使用します。

TreeView ノードのプロパティ:

.Children : integer

ノードの子の数を返します。

.Parent : INode

親ノードを返します。

.Child : INode

最初の子ノードを返します。

.Root : INode

ルート ノード(階層で最上位の親)を返します。

.Previous : INode

同じ階層レベルの前のノードを返します。

.Next : INode

同じ階層レベルの次のノードを返します。

.FirstSibling : INode

最初の兄弟を返します。

.LastSibling : INode

最後の兄弟を返します。

.FullPath : string

ノードのフル パスを文字列として返します。このページで説明した TreeView の .PathSeparator プロパティも参照してください。

たとえば値を「>」に設定し、「ROOT」の子ノード「Box01」の子ノード「Sphere01」の .FullPath プロパティを取得すると、パス文字列「ROOT>Box01>Sphere01」が返されます。

.Text : string

ノードによって表示されるテキストを取得/設定します。

.ForeColor : OLE_COLOR

テキストの色を取得/設定します。

.BackColor : OLE_COLOR

ノードのバックグラウンド色を取得/設定します。

注:

Microsoft ActiveX コントロールでは、RGB カラー仕様ではなく、BGR カラー仕様が使用されます。

.Bold : boolean

true に設定した場合、テキストは太字で表示されます。false に設定すると、通常のテキストが使用されます。

.Index : integer

ノードのインデックスを返します。

.Checked : boolean

ノードのチェック状態を取得/設定します。状態の取得と設定は常に実行できますが、チェックボックスは、TreeView コントロールの .checkboxes プロパティを true に設定した場合に限って表示されます。

.Visible : boolean

ノードの表示をブール値として取得/設定します。

.Selected : boolean

ノードの表示をブール値として取得/設定します。

.Expanded : boolean

ノードの展開状態を取得/設定します。true に設定すると、すべての子が表示されます。false に設定すると、子の表示が縮小されて親ノードのみが表示されます。

.Image : integer, default:undefined

ノードによって表示されるイメージのインデックスを設定します。インデックスは、TreeView の imageList プロパティを指します。これには ImageList ActiveX コントロールが一般的に割り当てられ、イメージ管理が提供されます。

.SelectedImage : integer, default:undefined

ノードが選択されたときに表示されるイメージのインデックスを設定します。

.ExpandedImage : integer, default:undefined

ノードが展開されたときに表示されるイメージのインデックスを設定します。

.Sorted : Boolean

true に設定した場合、ノードの子がソートされます。

.Key : string
.Tag : undefined

ノード メソッド:

次のメソッドは、単一の TreeView ノードに対して使用できます。

.CreateDragImage()
.EnsureVisible()