"Microsoft ListView Control 6.0 (SP4)" "MSComctlLib.ListViewCtrl.2" "{BDD1F04B-858B-11D1-B16A-00C0F0283628}"
ActiveX コントロールは、DotNet フレームワークとそのコントロールを考慮して、最新バージョンの Microsoft Windows オペレーティング システムで非推奨となりました。
MAXScript では引き続き ActiveX コントロールがサポートされますが、これらは MAXScript にアクセス可能なシステムにインストールおよび登録する必要があります。
ActiveX コントロールの代わりに、MAXScript では、3ds Max 9 以降において DotNet コントロールがサポートされます。
既存の ActiveX コードを DotNet に切り替える例につては、「ActiveX ListView コントロールの DotNet ListView コントロールへの変換」を参照してください。
説明:
ListView ActiveX コントロールは、MAXScript ロールアウトで最もよく使われる ActiveX コントロールの 1 つです。このコントロールは非常に柔軟でカスタマイズすることができるため、この章で詳細に説明します。リストやスプレッドシートの様なユーザ インタフェース コントロールを作成する場合に使用できます。
コンストラクタ:
activeXControl lv "MSComctlLib.ListViewCtrl"プロパティ:
.ListItems : IListItems このプロパティは ListItem にアクセスします。ListItem は Listview 内の行を表し、次のプロパティとメソッドが用意されています。
.ListItems プロパティ:
.ListItems.Count : integerListView コントロール内の ListItem の数を取得/設定します。
.ListItems[IndexList] : IListItem, read-onlyインデックスで指定された ListItem を返します。インデックスの基数は 1 です。
.ListItems メソッド:
.ListItems.Add Index:undefined Key:undefined Text:undefined Icon:undefined SmallIcon:undefinedListView コントロールに新しい ListItem を追加します。
.ListItems.Clear()ListItem を消去します。すべての ListItem が ListView から削除されます。
.ListItems.Remove Index:undefinedインデックスで指定された ListItem を削除します。インデックスの基数は 1 です。
.ColumnHeaders : IColumnHeadersこのプロパティは、ListView の列ヘッダにアクセスします。
.ColumnHeaders プロパティ:
.Count : integerListView コントロール内の列ヘッダの数を取得/設定します。
.Item[Index:undefined] : IColumnHeader, read-onlyインデックスで指定された列ヘッダを ListView コントロールから取得します。インデックスの基数は 1 です。
単一列ヘッダのプロパティのリストについては「ColumnHeader のプロパティとメソッド」を参照してください。
.ColumnHeaders メソッド:
.Clear()列ヘッダを消去します。すべての列ヘッダが ListView から削除されます。
.Remove Index:undefinedインデックスで指定された列ヘッダを削除します。インデックスの基数は 1 です。
._NewEnum()戻り値のタイプがサポートされていません。
.Add Index:undefined Key:undefined Text:undefined Width:undefined Alignment:undefined Icon:undefinedListView コントロールに新しい列を追加します。
.HideColumnHeaders : Booleanこのプロパティによって、列ヘッダを有効と無効を切り替えます。true に設定した場合、列ヘッダは非表示になります。false に設定した場合、列ヘッダは表示されます。.View プロパティが #lvwReport に設定されている場合にのみ、列ヘッダを使用できます。
.AllowColumnReorder : Booleantrue に設定した場合、ユーザは列をドラッグして、順序を指定することができます。false (既定値)に設定した場合、列の順序はロックされ、インタラクティブに変更できません
.View: ListViewConstants( #lvwIcon | #lvwSmallIcon | #lvwList | #lvwReport )ListView コントロールのビュー タイプを取得/設定します。
.Appearance : AppearanceConstant( #ccFlat | #cc3D )ListView コントロールの外観を取得/設定します。#cc3D が既定値です。

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

.Arrange : ListArrangeConstants( #lvwNone | #lvwAutoLeft | #lvwAutoTop )ListView コントロールの配置を制御します。既定は #lvwNone です。
.DropHighlight : IListItemListItem をこのプロパティに割り当てると、この ListItem はハイライト表示されます(選択されていることを示していますが、選択された状態を示すフラグは設定されません)。このハイライトは、選択ハイライトには影響されません。DropHighlight が再び undefined に設定されるまで、指定された ListItem はハイライト表示されます。
以下のスクリーンショットでは、Teapot01 と表された ListItem は DropHighlight に割り当てられたもので、Box01 と表された ListItem はマウスで選択されたものです。

.LabelEdit: ListLabelEditConstants( #lvwAutomatic | #lvwManual )ラベル(これが ListItem の最初の列のテキスト)の編集を制御します。既定は #lvwAutomatic です。
#lvwAutomatic に設定した場合、ユーザはこの項目をクリックして選択してからもう一度ラベル位置でクリックすると、テキスト フィールドが開き、任意のテキストを入力できます。
#lvwManual に設定した場合、開発者が .StartLabelEdit() メソッドを使用したときにのみ、ラベル編集を開始できます。
ラベル テキスト フィールドに入力するには、3ds Max のキーボード ショートカット(アクセラレータ)を無効にする必要があります。詳細は、「ActiveX - 3ds Max キーボード アクセラレータを無効にする」を参照してください。

.LabelWrap : Booleanラベル ラップを制御します。
.Checkboxes : Booleantrue に設定した場合、各 ListItem の最初の列にチェックボックスが表示されます。false (既定値)に設定した場合、ListItem ラベルだけが表示されます。

.Enabled : Boolean既定値の true に設定した場合は、ListItems の選択、ラベルの編集、チェックボックスのチェック、列幅の調整などができます。false に設定すると、ListItems は「フリーズ」され、どのような方法でも変更できなくなります。
.ForeColor : OLE_COLORListView の描画に使用するフォアグラウンド(テキスト)カラーを制御します。
.BackColor : OLE_COLORListView の描画に使用するバックグラウンド カラーを制御します。
ActiveX が使用する OLE_COLOR 値は RGB ではなく BGR です。
以下のスクリーンショットには、既定の白色のバックグラウンド(.BackColor プロパティを設定しない場合)、.BackColor = color 225 215 210、.BackColor = color 215 225 210、および .BackColor = color 210 215 225 の各例を示しています。


.GridLines : Booleanfalse (既定値)に設定した場合、グリッド線は描かれません。true に設定した場合、行および列を区切るグリッド線が描かれます。

.FlatScrollBar : Booleanfalse (既定値)に設定した場合、スクロールバーが表示されます。true に設定した場合、スクロールバーは表示されません。矢印キーを使用して選択を移動すれば上下方向にスクロールできますが、水平方向にはスクロールできません。
.Picture : IPictureDispバックグラウンドに画像を割り当てることができます。IPuctureDisp 値として ActiveX コントロールに画像を渡す方法の詳細については、「loadPicture」を参照してください。
以下の例は、Photoshop で作成し、24 bit の BMP ファイルでディスクに保存された 500 x 200 ピクセル サイズの黄色から赤色へのグラデーション画像を、次の行を使用して.Picture プロパティに渡したものです。
lv.picture = loadPicture "c:/3dsmax6/images/activex_gradient.bmp"

.PictureAlignment : ListPictureAlignmentConstants( #lvwTopLeft | #lvwTopRight | #lvwBottomLeft | #lvwBottomRight | #lvwCenter | #lvwTile ).Picture プロパティに割り当てられた画像の位置合わせを制御します。
.TextBackground : ListTextBackgroundConstants( #lvwTransparent | #lvwOpaque )テキスト バックグラウンドの外観を制御します。#lvwOpaque に設定した場合、上の例は次のように表示されます。

.Font : IFontDisp使用されるフォントを制御する MSDisplatch 値を返します。MAXScript では設定できません。
.SelectedItem : IListItem, read-only, default:undefined選択された項目を返します。
.FullRowSelect : booleantrue に設定した場合、項目またはサブ項目を選択すると、行全体が選択されます。false に設定した場合、ListItem (最初の列)だけが選択されます。
.MultiSelect : Booleantrue に設定した場合、ユーザは複数の ListItem を同時に選択できます。false (既定値)に設定した場合、1 度に 1 つの ListItem しか選択できません。
.HideSelection : Booleantrue に設定した場合、選択は表示されません。false に設定した場合、選択が表示されます。
.HotTracking : Booleantrue に設定した場合、マウスが ListItems の上に移動すると、ListItems がハイライト表示されますfalse (既定値)に設定した場合、ListItem の上にマウスを移動しても影響はありません。
.HoverSelection : Booleantrue に設定した場合、ListItem の上にマウスを移動したときに、自動的にこの ListItem が選択されます。false (既定値)に設定した場合、ユーザがマウスでクリックしたときにのみ、ListItem は選択されます。
.MouseIcon : IPictureDispマウス アイコンを IPictureDisp 値で返します。MAXScript では設定できません。
.MousePointer : MousePointerConstants( #ccDefault | #ccArrow | #ccCross | #ccIBeam | #ccIcon | #ccSize | #ccSizeNESW | #ccSizeNS | #ccSizeNWSE | #ccSizeEW | #ccUpArrow | #ccHourglass | #ccNoDrop | #ccArrowHourglass | #ccArrowQuestion | #ccSizeAll | #ccCustom )マウス ポインタが ListView Control の上にある場合のマウス ポインタのタイプを取得/設定します。スクリプト開発者は、このページで詳しく説明するマウス イベントを使用し、基礎となる内容か許可されているアクションによってマウス ポインタを変更できます。
.Sorted : Booleanfalse (既定値)に設定した場合、ListView.ListItems 配列に追加した順序で、ListItem が表示されます。
true に設定した場合、ListItem はアルファベット順に並べられます。既定では、最初の列のテキストを使用して昇順に並べられます。
.SortOrder : ListSortOrderConstants( #lvwAscending | #lvwDescending ).Sort を true に設定した場合、このプロパティはソートの方向を制御します。
以下のスクリーンショットは、同じオブジェクトを、ソートなし、昇順ソート、および降順ソートで表示したものです。

.SortKey : integerMAXScript では設定できません。
次のプロパティでは、ImageList ActiveX コントロールを割り当てて、ListView コントロールがアイコンとして使用する画像を指定することができます。
.View プロパティがそれぞれ #lvwIcon に設定されている場合にのみ、アイコンが表示されます。#lvwSmallIcon
.Icons : IVBDataObjectこのプロパティを使用すると、アイコンをListView コントロールに割り当てることができます。アイコンとして使用する画像を含んだ IVBDataObject は「ImageList ActiveX コントロール」によって提供されます。
.SmallIcons : IVBDataObject, read-only, default:undefinedこのプロパティを使用すると、小さなアイコンを ListView コントロールに割り当てることができます。アイコンとして使用する画像を含んだ IVBDataObject は、ImageList ActiveX コントロール コントロールによって提供されます。
.ColumnHeaderIcons : IVBDataObject, read-only, default:undefinedこのプロパティを使用すると、ListView コントロールの列ヘッダにアイコンに割り当てることができます。アイコンとして使用する画像を含んだ IVBDataObject は、ImageList ActiveX コントロール コントロールによって提供されます。
.OLEDragMode : OLEDragConstants( #ccOLEDragManual | #ccOLEDragAutomatic )OLE Drag モードを制御します。
.OLEDropMode : OLEDropConstants( #ccOLEDropNone | #ccOLEDropManual )OLE Drop モードを制御します。
.hWnd : OLE_HANDLEこれは、Windows メッセージを ActiveX コントロールに送信する場合に必要となる ActiveX ハンドルです。詳細については、「Sending Windows Message」を参照してください。
メソッド:
.FindItem sz:string Where:undefined Index:undefined fPartial:undefined.GetFirstVisible().HitTest x:float y:float applyUIScaling:<true>.StartLabelEdit().OLEDrag().Refresh()イベント
on <control_name> BeforeLabelEdit Cancel:integer do ( ... )ラベル編集を開始する前に呼び出されます。
on <control_name> AfterLabelEdit Cancel:integer NewString:string do ( ... )ラベル編集を終了した後に呼び出されます。
on <control_name> ColumnClick ColumnHeader:ColumnHeader do ( ... )ユーザが列ヘッダをクリックしたときに呼び出されます。ColumnHeader 引数には、クリックされた ColumnHeader が含まれます。ColumnHeader には、インデックスや位置合わせコントロールなどの固有のプロパティがあります。詳細は、「ColumnHeader のプロパティとメソッド」を参照してください。
on <control_name> ItemClick Item:ListItem do ( ... )ユーザが ListItem をクリックしたときに呼び出されます。この項目引数には、クリックされた行の、0 を基数としたインデックスが含まれます。
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 lv_objects keyDown theKeyCode theShiftState do ( format "Key Code is %, Shift State is %\n" theKeyCode theShiftState ) --where lv_objects is the name of the ActiveX ListView, --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 ( ... )ユーザがマウスで ListItem をクリックしたときに呼び出されます。
Button 引数には、マウスのボタンに対応するビットから成る整数値が含まれます。ビット 1 は左マウス ボタンを、ビット 2 は右マウス ボタンを、ビット 3 は中央のマウス ボタンまたはホイールを表します。
1 - 左マウス ボタンが押されました。
2 - 右マウス ボタンが押されました。
4 - 中央のマウス ボタンまたはホイールが押されました。
複数のマウス ボタンを同時に押しても値は追加されず、それぞれのボタンの個別イベントが生成されます。
Shift 引数には、先に説明したとおり、[Shift]、[Ctrl]、および[Alt]キーの状態が含まれます。
x および y 引数には、ListView ピクセル座標(Twips ではありません)におけるクリックの位置が含まれます。ここで、0,0 は ListView コントロールの左上隅になります。
例:
rollout test "Test" ( activeXControl lv "MSComctlLib.ListViewCtrl" height:100 width:100 on lv MouseDown Button 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 ( ... )ユーザがマウスを ListView コントロール内に移動したときに呼び出されます。
Button 引数には、マウスのボタンに対応するビットから成る整数値が含まれます。ビット 1 は左マウス ボタンを、ビット 2 は右マウス ボタンを、ビット 3 は中央のマウス ボタンまたはホイールを表します。
1 - 左マウス ボタンが押されました。
2 - 右マウス ボタンが押されました。
4 - 中央のマウス ボタンまたはホイールが押されました。
複数のマウス ボタンを同時に押しても値は追加されず、それぞれのボタンの個別イベントが生成されます。
Shift 引数には、先に説明したとおり、[Shift]、[Ctrl]、および[Alt]キーの状態が含まれます。
x および y 引数には、ListView ピクセル座標(Twips ではありません)におけるクリックの位置が含まれます。ここで、0,0 は ListView コントロールの左上隅になります。
例
--This script will print the mouse values --while you move the mouse inside the ListView control rollout test "Test" ( activeXControl lv "MSComctlLib.ListViewCtrl" height:100 width:100 on lv 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 ( ... )ユーザが ListView コントロール上でマウスを放したときに呼び出されます。
Button 引数には、マウスのボタンに対応するビットから成る整数値が含まれます。ビット 1 は左マウス ボタンを、ビット 2 は右マウス ボタンを、ビット 3 は中央のマウス ボタンまたはホイールを表します。
1 - 左マウス ボタンが押されました。
2 - 右マウス ボタンが押されました。
4 - 中央のマウス ボタンまたはホイールが押されました。
複数のマウス ボタンを同時に押しても値は追加されず、それぞれのボタンの個別イベントが生成されます。
Shift 引数には、先に説明したとおり、[Shift]、[Ctrl]、および[Alt]キーの状態が含まれます。
x および y 引数には、ListView ピクセル座標(Twips ではありません)におけるクリックの位置が含まれます。ここで、0,0 は ListView コントロールの左上隅になります。
例
rollout test "Test" ( activeXControl lv "MSComctlLib.ListViewCtrl" height:100 width:100 on lv MouseUp Button Shift x y do format "Button: %, Shift: %, xy: %,%\n" Button Shift x y ) createDialog test
on <control_name> Click do ( ... )ユーザが ListView コントロール内でクリックしたときに呼び出されます。このイベントは特定の ListItem を返すわけではありませんが、すべての ListItem の選択状態や他のプロパティを問い合わせる場合に使用できます。これは、ユーザが ListView をクリックしたという一般的な通知であり、イベントによって行われる実際のアクションは、スクリプト開発者が指定できます。
on <control_name> DblClick do ( ... )ユーザが ListView コントロール内でダブルクリックしたときに呼び出されます。
on <control_name> ItemCheck Item:ListItem do ( ... )ユーザが ListItem のチェックボックスの状態が変更したときに呼び出されます(プロパティ .checkboxes = true であり、利用できる場合)。
Item 引数には、チェックボックスが変更された ListItem が含まれます。続いて、この項目の .checked プロパティにアクセスすると、新しい状態にアクセスできます。また、他のすべての ListItem プロパティにもアクセスできます。
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 ( ... )ListItem は、.ListItems.Add() メソッドを使用して作成できます。また、上記のように 1 を基数としたインデックスで指定したアクセスを使用してアクセスできます。すべての ListItem には、次のプロパティとメソッドがあります。
.Text : stringListItem のテキストを取得/設定します。
.Ghosted : BooleanListItem のゴースト状態を取得/設定します。
.Height : floattwip での ListItem の高さを返します。MAXScript では設定できません。
.Icon : undefinedListItem のアイコンを取得/設定します。アイコンは、1 を基数としたインデックスを付けて .icons 配列に収められており、この配列は「ImageList ActiveX コントロール」によって管理されます。
.Index : integerListItem のインデックスを返します。MAXScript では設定できません。
.Key : stringListItem のキーを返します。MAXScript では設定できません。
.Selected : BooleanListItem の選択状態を取得/設定します。true の場合、項目は選択され、false の場合、選択されません。ListItem を同時に複数選択できるか、それとも 1 つしか選択できないかは、ListView の .MultiSelect プロパティの状態によって決まります。1 つの ListItem の .selected プロパティを true に設定し、.MultiSelect を false に設定した場合、選択された他のすべての ListItem が自動的に選択解除されます。
.SmallIcon : undefinedListItem の SmallIcon を取得/設定します。
.Tag : undefinedListItem のタグを取得/設定します。
.Top : floattwip での上部座標を返します。
.Left : floattwip での左座標を返します。
.Width : floattwip での ListItem の幅を返します。
.ListSubItems : IListSubItemsListItem のサブ項目の配列へのアクセスを提供します。サブ項目は、最初の列に続く列になります。サブ - 項目
サブ項目には、.ListSubItems へのインデックスで指定したアクセスを使用してアクセスできます。
例
--to access the second sub-item of the first item in --a ListView Control stored in the variable lv, --you could use: lv.listItems[1].listSubItems[2]
.Checked : BooleanListItem のチェック状態を取得/設定します。この後で説明する on ItemCheck do イベント ハンドラも参照してください。
.ForeColor : OLE_COLORListItem のテキスト カラーを取得/設定します。
ActiveX が使用する OLE_COLOR 値は RGB ではなく BGR です。
.ToolTipText : stringListItem のツールチップ テキストを取得/設定します。
.Bold : BooleanListItem の太字テキスト プロパティを取得/設定します。true に設定した場合、テキストは太字で表示されます。
.CreateDragImage().EnsureVisible()必要に応じてビューをスクロールすることで、ListView に ListItem が表示された状態にします。
ListSubItem は、.ListItems.Add() メソッドを使用して作成できます。また、上記のように 1 を基数としたインデックスで指定したアクセスを使用してアクセスできます。すべての ListItem には、次のプロパティがあります。
.Text : stringListSubItem のテキストを取得/設定します。
.ForeColor : OLE_COLORListSubItem のテキスト カラーを取得/設定します。
ActiveX が使用する OLE_COLOR 値は RGB ではなく BGR です。
.Bold : booleanListSubItem の太字テキスト プロパティを取得/設定します。true に設定した場合、テキストは太字で表示されます。
.ToolTipText : stringListSubItem のツールチップ テキストを取得/設定します。
.Index : integerListSubItem のインデックスを返します。MAXScript では設定できません。
.Key : string.Tag : undefined.ReportIcon : undefinedメソッドは公開されません。
すべての ColumnHeader には、次のプロパティがあります。
.Text : stringColumnHeader によって表示されるテキストを取得/設定します
.Alignment : ListColumnAlignmentConstants( #lvwColumnLeft | #lvwColumnRight | #lvwColumnCenter )列ヘッダのテキストの位置合わせを取得/設定します。
.Index : integer列ヘッダのインデックスを取得します。
.Key : string列ヘッダのキーを取得します。
.Left : floattwip での列ヘッダの左マージンを取得します。
.SubItemIndex : integer列ヘッダのサブ項目インデックスを取得します。
.Tag : undefined列ヘッダのタグを取得/設定します。
.Width : floattwip での列の幅を取得/設定します。
.Icon : undefined列ヘッダのアイコンを取得/設定します。アイコンは、1 を基数としたインデックスを付けて .icons 配列に収められており、この配列は ImageList ActiveX コントロールによって管理されます。アイコンが割り当てられていない場合、このプロパティは 0 を返します。
.Position : integer列ヘッダの位置を取得/設定します。この位置により列の順序が決まります。既定では、.Position は .Index プロパティと同じになるように設定されています。列の順序を効果的に変更し、適切な位置に列を配置するには、.Position を別の値に設定します。
メソッドは公開されません。