"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 : integer
ListView コントロール内の ListItem の数を取得/設定します。
.ListItems[IndexList] : IListItem, read-only
インデックスで指定された ListItem を返します。インデックスの基数は 1 です。
.ListItems メソッド:
.ListItems.Add Index:undefined Key:undefined Text:undefined Icon:undefined SmallIcon:undefined
ListView コントロールに新しい ListItem を追加します。
.ListItems.Clear()
ListItem を消去します。すべての ListItem が ListView から削除されます。
.ListItems.Remove Index:undefined
インデックスで指定された ListItem を削除します。インデックスの基数は 1 です。
.ColumnHeaders : IColumnHeaders
このプロパティは、ListView の列ヘッダにアクセスします。
.ColumnHeaders プロパティ:
.Count : integer
ListView コントロール内の列ヘッダの数を取得/設定します。
.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:undefined
ListView コントロールに新しい列を追加します。
.HideColumnHeaders : Boolean
このプロパティによって、列ヘッダを有効と無効を切り替えます。true に設定した場合、列ヘッダは非表示になります。false に設定した場合、列ヘッダは表示されます。.View
プロパティが #lvwReport
に設定されている場合にのみ、列ヘッダを使用できます。
.AllowColumnReorder : Boolean
true に設定した場合、ユーザは列をドラッグして、順序を指定することができます。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 : IListItem
ListItem をこのプロパティに割り当てると、この 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 : Boolean
true に設定した場合、各 ListItem の最初の列にチェックボックスが表示されます。false (既定値)に設定した場合、ListItem ラベルだけが表示されます。
.Enabled : Boolean
既定値の true に設定した場合は、ListItems の選択、ラベルの編集、チェックボックスのチェック、列幅の調整などができます。false に設定すると、ListItems は「フリーズ」され、どのような方法でも変更できなくなります。
.ForeColor : OLE_COLOR
ListView の描画に使用するフォアグラウンド(テキスト)カラーを制御します。
.BackColor : OLE_COLOR
ListView の描画に使用するバックグラウンド カラーを制御します。
ActiveX が使用する OLE_COLOR 値は RGB ではなく BGR です。
以下のスクリーンショットには、既定の白色のバックグラウンド(.BackColor プロパティを設定しない場合)、.BackColor = color 225 215 210、.BackColor = color 215 225 210、および .BackColor = color 210 215 225 の各例を示しています。
.GridLines : Boolean
false (既定値)に設定した場合、グリッド線は描かれません。true に設定した場合、行および列を区切るグリッド線が描かれます。
.FlatScrollBar : Boolean
false (既定値)に設定した場合、スクロールバーが表示されます。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 : boolean
true に設定した場合、項目またはサブ項目を選択すると、行全体が選択されます。false に設定した場合、ListItem (最初の列)だけが選択されます。
.MultiSelect : Boolean
true に設定した場合、ユーザは複数の ListItem を同時に選択できます。false (既定値)に設定した場合、1 度に 1 つの ListItem しか選択できません。
.HideSelection : Boolean
true に設定した場合、選択は表示されません。false に設定した場合、選択が表示されます。
.HotTracking : Boolean
true に設定した場合、マウスが ListItems の上に移動すると、ListItems がハイライト表示されますfalse (既定値)に設定した場合、ListItem の上にマウスを移動しても影響はありません。
.HoverSelection : Boolean
true に設定した場合、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 : Boolean
false (既定値)に設定した場合、ListView.ListItems 配列に追加した順序で、ListItem が表示されます。
true に設定した場合、ListItem はアルファベット順に並べられます。既定では、最初の列のテキストを使用して昇順に並べられます。
.SortOrder : ListSortOrderConstants( #lvwAscending | #lvwDescending )
.Sort
を true に設定した場合、このプロパティはソートの方向を制御します。
以下のスクリーンショットは、同じオブジェクトを、ソートなし、昇順ソート、および降順ソートで表示したものです。
.SortKey : integer
MAXScript では設定できません。
次のプロパティでは、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 : string
ListItem のテキストを取得/設定します。
.Ghosted : Boolean
ListItem のゴースト状態を取得/設定します。
.Height : float
twip での ListItem の高さを返します。MAXScript では設定できません。
.Icon : undefined
ListItem のアイコンを取得/設定します。アイコンは、1 を基数としたインデックスを付けて .icons 配列に収められており、この配列は「ImageList ActiveX コントロール」によって管理されます。
.Index : integer
ListItem のインデックスを返します。MAXScript では設定できません。
.Key : string
ListItem のキーを返します。MAXScript では設定できません。
.Selected : Boolean
ListItem の選択状態を取得/設定します。true の場合、項目は選択され、false の場合、選択されません。ListItem を同時に複数選択できるか、それとも 1 つしか選択できないかは、ListView の .MultiSelect プロパティの状態によって決まります。1 つの ListItem の .selected プロパティを true に設定し、.MultiSelect を false に設定した場合、選択された他のすべての ListItem が自動的に選択解除されます。
.SmallIcon : undefined
ListItem の SmallIcon を取得/設定します。
.Tag : undefined
ListItem のタグを取得/設定します。
.Top : float
twip での上部座標を返します。
.Left : float
twip での左座標を返します。
.Width : float
twip での ListItem の幅を返します。
.ListSubItems : IListSubItems
ListItem のサブ項目の配列へのアクセスを提供します。サブ項目は、最初の列に続く列になります。サブ - 項目
サブ項目には、.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 : Boolean
ListItem のチェック状態を取得/設定します。この後で説明する on ItemCheck do
イベント ハンドラも参照してください。
.ForeColor : OLE_COLOR
ListItem のテキスト カラーを取得/設定します。
ActiveX が使用する OLE_COLOR 値は RGB ではなく BGR です。
.ToolTipText : string
ListItem のツールチップ テキストを取得/設定します。
.Bold : Boolean
ListItem の太字テキスト プロパティを取得/設定します。true に設定した場合、テキストは太字で表示されます。
.CreateDragImage()
.EnsureVisible()
必要に応じてビューをスクロールすることで、ListView に ListItem が表示された状態にします。
ListSubItem は、.ListItems.Add()
メソッドを使用して作成できます。また、上記のように 1 を基数としたインデックスで指定したアクセスを使用してアクセスできます。すべての ListItem には、次のプロパティがあります。
.Text : string
ListSubItem のテキストを取得/設定します。
.ForeColor : OLE_COLOR
ListSubItem のテキスト カラーを取得/設定します。
ActiveX が使用する OLE_COLOR 値は RGB ではなく BGR です。
.Bold : boolean
ListSubItem の太字テキスト プロパティを取得/設定します。true に設定した場合、テキストは太字で表示されます。
.ToolTipText : string
ListSubItem のツールチップ テキストを取得/設定します。
.Index : integer
ListSubItem のインデックスを返します。MAXScript では設定できません。
.Key : string
.Tag : undefined
.ReportIcon : undefined
メソッドは公開されません。
すべての ColumnHeader には、次のプロパティがあります。
.Text : string
ColumnHeader によって表示されるテキストを取得/設定します
.Alignment : ListColumnAlignmentConstants( #lvwColumnLeft | #lvwColumnRight | #lvwColumnCenter )
列ヘッダのテキストの位置合わせを取得/設定します。
.Index : integer
列ヘッダのインデックスを取得します。
.Key : string
列ヘッダのキーを取得します。
.Left : float
twip での列ヘッダの左マージンを取得します。
.SubItemIndex : integer
列ヘッダのサブ項目インデックスを取得します。
.Tag : undefined
列ヘッダのタグを取得/設定します。
.Width : float
twip での列の幅を取得/設定します。
.Icon : undefined
列ヘッダのアイコンを取得/設定します。アイコンは、1 を基数としたインデックスを付けて .icons 配列に収められており、この配列は ImageList ActiveX コントロールによって管理されます。アイコンが割り当てられていない場合、このプロパティは 0 を返します。
.Position : integer
列ヘッダの位置を取得/設定します。この位置により列の順序が決まります。既定では、.Position は .Index プロパティと同じになるように設定されています。列の順序を効果的に変更し、適切な位置に列を配置するには、.Position を別の値に設定します。
メソッドは公開されません。