McBasic™Get McBasic™ ↗
Build 881
Controls · Visual control
ListView component icon

ListView

Present image-backed items and columns with selection and activation events.

47 properties21 events1 methodsDefault: SelectionChanged

Use it in a Form#

The ImageList is nonvisual: it supplies images to visible controls. Keep image keys and item identities stable. SelectionChanged, ItemClick, ItemDoubleClick and ColumnClick represent different actions, so wire each explicitly instead of routing every interaction through one guessed Click event.

Add ListView to its intended parent and name it lvwFiles for this example:

PropertyExample value
Columns"Name|300\nSize|130\nModified|190"
Items"Document=Manual|document|2.4 MB|Today\nExamples=Examples|folder|18 items|Yesterday\nReadme=Read Me|document|12 KB|Monday"
ImageList"imgImages"
View"Details"
MultiSelectTrue
FullRowSelectTrue
GridLinesTrue
SortedTrue
SelectedIndex0
AccessibleName"Project files"

A complete handler from Forms/frmMain.bas. The linked lesson includes its surrounding controls, declarations and helpers.

Forms/frmMain.bas
Private Sub lvwFiles_SelectionChanged()
    lblStatus.Caption = "Selected: " + lvwFiles.SelectedItem
End Sub

Properties#

Contract defaults are shown below. Where a new control has a different Designer starting value, that value is listed separately.

Left

DoubleDefault: 0

Horizontal position in device-independent points, relative to the parent container.

Range: -100000 to 100000.

Top

DoubleDefault: 0

Vertical position in device-independent points, relative to the parent container.

Range: -100000 to 100000.

Width

DoubleDefault: 320

Control width in device-independent points.

Range: 0 to 100000.

Height

DoubleDefault: 180

Control height in device-independent points.

Range: 0 to 100000.

MinWidth

DoubleDefault: 0

Minimum control width in device-independent points; 0 lets the parent layout choose.

Range: 0 to 100000.

MinHeight

DoubleDefault: 0

Minimum control height in device-independent points; 0 lets the parent layout choose.

Range: 0 to 100000.

MaxWidth

DoubleDefault: 100000

Maximum control width in device-independent points.

Range: 0 to 100000.

MaxHeight

DoubleDefault: 100000

Maximum control height in device-independent points.

Range: 0 to 100000.

TabIndex

LongDefault: 0

Keyboard navigation order within the parent container; lower values come first.

Range: 0 to 100000.

TabStop

BooleanDefault: True

Whether Tab navigation can move focus to this ListBox.

ZIndex

LongDefault: 0

Stacking order among sibling controls; larger values appear in front. Equal values preserve document order.

Range: -100000 to 100000.

Anchor

StringDefault: "Left,Top"Not in InspectorNot serialized

Edges kept at their authored distance when the parent resizes. Use a comma-separated combination of Left, Top, Right and Bottom; Dock overrides the effective anchor without deleting it.

Dock

StringDefault: "None"

Automatic placement within the parent: None, Left, Top, Right, Bottom or Fill. Dock overrides effective Anchor layout without deleting the stored anchors.

Margin

StringDefault: "0"

External spacing as one non-negative DIP value or Left,Top,Right,Bottom.

Cursor

StringDefault: "Default"

Pointer shown over the control: Default, Arrow, Hand, IBeam, Cross, Wait, Help, SizeAll, SizeNS, SizeWE, SizeNWSE, SizeNESW or NotAllowed.

Opacity

DoubleDefault: 1

Visual opacity from 0 (transparent) to 1 (opaque).

Range: 0 to 1.

DesignLocked

BooleanDefault: FalseDesigner only

Prevents movement and resizing in the Designer without changing runtime interaction.

Visible

BooleanDefault: True

Whether the control is shown in the running application.

Enabled

BooleanDefault: True

Whether the control accepts user interaction in the running application.

HitTestVisible

BooleanDefault: True

Whether the running control participates in pointer hit testing. The control remains selectable in the Designer.

AllowDrop

BooleanDefault: False

Whether this running control accepts application drag-and-drop operations; Designer movement is separate.

DragMode

LongDefault: 0

VB control drag: 0 Manual (code starts a drag with the Drag method) or 1 Automatic (a left-button press starts a drag, and the control raises no Click, MouseDown or MouseUp for that press).

Range: 0 to 1.

DragIcon

StringDefault: ""

Case-insensitive name of a declared project image resource shown under the pointer while this control is dragged; empty shows a grey outline of the control.

Font

StringDefault: ""

Font as Family|Size or Family|Size|Regular/Bold|Normal/Italic, size 6–96 DIP. Empty uses the theme font; System uses the theme family.

ForeColor

StringDefault: ""

Text color as #RRGGBB. Empty uses the current macOS theme color.

BackColor

StringDefault: ""

Background color as #RRGGBB. Empty uses the current macOS theme color.

Padding

StringDefault: "4"

Internal spacing around ListBox rows as one non-negative DIP value or Left,Top,Right,Bottom.

BorderStyle

StringDefault: "Solid"

ListBox border rendering: Solid or None.

BorderColor

StringDefault: ""

Border color as #RRGGBB. Empty uses the theme border color.

BorderWidth

DoubleDefault: 1

Uniform border width in device-independent points.

Range: 0 to 100.

CornerRadius

DoubleDefault: 0

Uniform ListBox corner radius in device-independent points.

Range: 0 to 1000.

AccessibleName

StringDefault: ""

Name announced by assistive technology. Empty uses the stable control Name.

AccessibleDescription

StringDefault: ""

Additional help text announced by assistive technology.

AutomationId

StringDefault: ""

Stable automation identifier; empty uses the component Name.

AccessibleRole

StringDefault: "Auto"

Accessibility role override. Auto preserves the native semantic role; explicit values use the corresponding platform automation role.

ToolTipText

StringDefault: ""

Help text shown when the pointer rests over the running control; empty disables the tooltip.

Tag

StringDefault: ""

Application-defined text associated with this control; McBasic™ does not interpret it.

Items

StringDefault: "Documents|document|12 KB|Today\nPhotos|photo|Folder|Yesterday"

One item per line: Text|ImageKey|SubItem1|SubItem2. An optional case-insensitive collection key may prefix the line as Key=Text|ImageKey|SubItems.

Columns

StringDefault: "Name|180\nType|90\nModified|120"

One details column per line as Caption|Width. Width is 24–2000 DIP; the first column contains the item image and text.

ImageList

StringDefault: ""

Name of a nonvisual ImageList component on this Form. Empty disables item images.

View

StringDefault: "Details"

Presentation mode: Details, LargeIcon, SmallIcon, List or Tile.

MultiSelect

BooleanDefault: False

Allows more than one selected item.

FullRowSelect

BooleanDefault: True

In Details view, selection covers the complete row.

GridLines

BooleanDefault: False

In Details view, draws separators between rows and columns.

Sorted

BooleanDefault: False

Sorts items by their display text using deterministic case-insensitive ordinal order.

SelectedIndex

LongDefault: -1

Zero-based selected item index, or -1 when no item is selected.

Range: -1 to 100000.

Index

LongDefault: -1Read only in BASICDesigner Index row

Position of this control in its control array, 0 to 32767. Several controls share one name only when every one of them has an Index. Absent from the layout, and -1 in code, when the control is not in an array.

Designer values: 0 to 32767. Clear the dedicated Index row for a non-array control; BASIC then reads -1.

Events and parameters#

Replace control with the object’s Name when creating a handler. ByRef arguments may be changed by your handler; ByVal arguments report an input value.

SelectionChanged

Occurs after the effective selection changes.

Signature — see the complete lesson for an implementation
Private Sub control_SelectionChanged()

No parameters.

ItemClick

Occurs for a clicked item; Index is the zero-based item index.

Signature — see the complete lesson for an implementation
Private Sub control_ItemClick(ByVal Index As Integer)
ParameterTypeDirection
IndexIntegerByVal

ItemDoubleClick

Occurs for a double-clicked item; Index is the zero-based item index.

Signature — see the complete lesson for an implementation
Private Sub control_ItemDoubleClick(ByVal Index As Integer)
ParameterTypeDirection
IndexIntegerByVal

ColumnClick

Occurs when a Details column header is clicked; ColumnIndex is zero-based.

Signature — see the complete lesson for an implementation
Private Sub control_ColumnClick(ByVal ColumnIndex As Integer)
ParameterTypeDirection
ColumnIndexIntegerByVal

DragEnter

Occurs when runtime drag data enters this control; set Effect to Copy, Move, Link or None.

Signature — see the complete lesson for an implementation
Private Sub control_DragEnter(ByVal Data As DragData, ByRef Effect As DragEffect, ByVal X As Double, ByVal Y As Double)
ParameterTypeDirection
DataDragDataByVal
EffectDragEffectByRef
XDoubleByVal
YDoubleByVal

DragOver

Occurs while runtime drag data moves over this control; Effect may be updated for the current position.

Signature — see the complete lesson for an implementation
Private Sub control_DragOver(ByVal Data As DragData, ByRef Effect As DragEffect, ByVal X As Double, ByVal Y As Double)
ParameterTypeDirection
DataDragDataByVal
EffectDragEffectByRef
XDoubleByVal
YDoubleByVal

DragOver

Occurs while a control dragged inside the app (DragMode or the Drag method) moves over this control: State is 0 when it enters, 2 while it moves over and 1 when it leaves; Source is the dragged control and X, Y are local DIP coordinates.

Signature — see the complete lesson for an implementation
Private Sub control_DragOver(ByVal Source As Control, ByVal X As Single, ByVal Y As Single, ByVal State As Integer)
ParameterTypeDirection
SourceControlByVal
XSingleByVal
YSingleByVal
StateIntegerByVal

DragLeave

Occurs when runtime drag data leaves this control without a drop.

Signature — see the complete lesson for an implementation
Private Sub control_DragLeave()

No parameters.

Drop

Occurs when runtime drag data is dropped on this control with a stable McBasic™ effect and local DIP coordinates.

Signature — see the complete lesson for an implementation
Private Sub control_Drop(ByVal Data As DragData, ByVal Effect As DragEffect, ByVal X As Double, ByVal Y As Double)
ParameterTypeDirection
DataDragDataByVal
EffectDragEffectByVal
XDoubleByVal
YDoubleByVal

DragDrop

Occurs when a control dragged inside the app (DragMode or the Drag method) is released over this control; Source is the dragged control and X, Y are local DIP coordinates.

Signature — see the complete lesson for an implementation
Private Sub control_DragDrop(ByVal Source As Control, ByVal X As Single, ByVal Y As Single)
ParameterTypeDirection
SourceControlByVal
XSingleByVal
YSingleByVal

MouseDown

Occurs when a pointing-device button is pressed over this control; Button is stable McBasic™ identity and X/Y are control-local DIP coordinates.

Signature — see the complete lesson for an implementation
Private Sub control_MouseDown(ByVal Button As MouseButton, ByVal Shift As KeyModifiers, ByVal X As Double, ByVal Y As Double)
ParameterTypeDirection
ButtonMouseButtonByVal
ShiftKeyModifiersByVal
XDoubleByVal
YDoubleByVal

MouseUp

Occurs when a pointing-device button is released for this control; Button is stable McBasic™ identity and X/Y are control-local DIP coordinates.

Signature — see the complete lesson for an implementation
Private Sub control_MouseUp(ByVal Button As MouseButton, ByVal Shift As KeyModifiers, ByVal X As Double, ByVal Y As Double)
ParameterTypeDirection
ButtonMouseButtonByVal
ShiftKeyModifiersByVal
XDoubleByVal
YDoubleByVal

MouseMove

Occurs when the pointer moves over the logical McBasic™ control; Button contains the currently held buttons and X/Y are local DIP coordinates.

Signature — see the complete lesson for an implementation
Private Sub control_MouseMove(ByVal Button As MouseButtons, ByVal Shift As KeyModifiers, ByVal X As Double, ByVal Y As Double)
ParameterTypeDirection
ButtonMouseButtonsByVal
ShiftKeyModifiersByVal
XDoubleByVal
YDoubleByVal

MouseEnter

Occurs once when the pointer enters the effective bounds of the logical McBasic™ control.

Signature — see the complete lesson for an implementation
Private Sub control_MouseEnter()

No parameters.

MouseLeave

Occurs once when the pointer leaves the effective bounds of the logical McBasic™ control.

Signature — see the complete lesson for an implementation
Private Sub control_MouseLeave()

No parameters.

MouseWheel

Occurs for normalized pointer-wheel input; Delta is portable, and X/Y are local DIP coordinates.

Signature — see the complete lesson for an implementation
Private Sub control_MouseWheel(ByVal Delta As Double, ByVal Shift As KeyModifiers, ByVal X As Double, ByVal Y As Double)
ParameterTypeDirection
DeltaDoubleByVal
ShiftKeyModifiersByVal
XDoubleByVal
YDoubleByVal

DoubleClick

Occurs when native system timing recognizes a primary-button double activation on the same logical McBasic™ control.

Signature — see the complete lesson for an implementation
Private Sub control_DoubleClick()

No parameters.

GotFocus

Occurs once when the ListBox receives effective keyboard focus.

Signature — see the complete lesson for an implementation
Private Sub control_GotFocus()

No parameters.

LostFocus

Occurs once when the ListBox loses effective keyboard focus.

Signature — see the complete lesson for an implementation
Private Sub control_LostFocus()

No parameters.

KeyDown

Occurs when a physical key is pressed while this control owns effective keyboard focus; setting Handled suppresses normal processing.

Signature — see the complete lesson for an implementation
Private Sub control_KeyDown(ByVal KeyCode As KeyCode, ByVal Shift As KeyModifiers, ByRef Handled As Boolean)
ParameterTypeDirection
KeyCodeKeyCodeByVal
ShiftKeyModifiersByVal
HandledBooleanByRef

KeyPress

Occurs for committed Unicode text input; set Handled to suppress the control default.

Signature — see the complete lesson for an implementation
Private Sub control_KeyPress(ByVal Character As String, ByRef Handled As Boolean)
ParameterTypeDirection
CharacterStringByVal
HandledBooleanByRef

KeyUp

Occurs when a physical key is released while this control owns effective keyboard focus; setting Handled suppresses normal processing.

Signature — see the complete lesson for an implementation
Private Sub control_KeyUp(ByVal KeyCode As KeyCode, ByVal Shift As KeyModifiers, ByRef Handled As Boolean)
ParameterTypeDirection
KeyCodeKeyCodeByVal
ShiftKeyModifiersByVal
HandledBooleanByRef

Methods#

SetFocus

Method contract
Sub SetFocus()

Call on your instance: lvwFiles.SetFocus.

Source baseline 20f4bfed6b · Build manifest