Left
Horizontal position in device-independent points, relative to the parent container.
Range: -100000 to 100000.
Combine provider paging with a local filter and a parameterized database search.
FilterText operates on loaded rows. A database search changes the SQL query and may match rows that are not loaded. QueryPageAsync uses a stable order, Name,ID, and a page size of five. Reset to page zero when the database search changes; do not mistake the visible row count for the total database size.
Add DataGrid to its intended parent and name it grdProducts for this example:
| Property | Example value |
|---|---|
IsReadOnly | True |
CanUserSortColumns | True |
CanUserResizeColumns | True |
HeadersVisible | True |
KeyColumn | "ID" |
Columns | "Name,Stock,Price" |
FilterColumn | "Name" |
A complete handler from Forms/MainForm.bas. The linked lesson includes its surrounding controls, declarations and helpers.
Private Sub grdProducts_SelectionChanged()
UpdateSelectionStatus
End SubContract defaults are shown below. Where a new control has a different Designer starting value, that value is listed separately.
LeftHorizontal position in device-independent points, relative to the parent container.
Range: -100000 to 100000.
TopVertical position in device-independent points, relative to the parent container.
Range: -100000 to 100000.
WidthControl width in device-independent points.
Range: 0 to 100000.
Designer starting value: 420.
HeightControl height in device-independent points.
Range: 0 to 100000.
Designer starting value: 220.
MinWidthMinimum control width in device-independent points; 0 lets the parent layout choose.
Range: 0 to 100000.
MinHeightMinimum control height in device-independent points; 0 lets the parent layout choose.
Range: 0 to 100000.
MaxWidthMaximum control width in device-independent points.
Range: 0 to 100000.
MaxHeightMaximum control height in device-independent points.
Range: 0 to 100000.
TabIndexKeyboard navigation order within the parent container; lower values come first.
Range: 0 to 100000.
ZIndexStacking order among sibling controls; larger values appear in front. Equal values preserve document order.
Range: -100000 to 100000.
AnchorEdges 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.
DockAutomatic placement within the parent: None, Left, Top, Right, Bottom or Fill. Dock overrides effective Anchor layout without deleting the stored anchors.
MarginExternal spacing as one non-negative DIP value or Left,Top,Right,Bottom.
VisibleWhether the control is shown in the running application.
EnabledWhether the control accepts user interaction in the running application.
HitTestVisibleWhether the running control participates in pointer hit testing. The control remains selectable in the Designer.
AllowDropWhether this running control accepts application drag-and-drop operations; Designer movement is separate.
DragModeVB 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.
DragIconCase-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.
FontCell text font as Family|Size or Family|Size|Regular/Bold|Normal/Italic, size 6–96 DIP. Empty uses the theme font.
ForeColorCell text color as #RRGGBB. Empty uses the Form or theme foreground.
BackColorGrid row and surface fill as #RRGGBB. Empty uses the theme fill.
AccessibleNameName announced by assistive technology. Empty uses the stable control Name.
CursorPointer shown over the control: Default, Arrow, Hand, IBeam, Cross, Wait, Help, SizeAll, SizeNS, SizeWE, SizeNWSE, SizeNESW or NotAllowed.
OpacityVisual opacity from 0 (transparent) to 1 (opaque).
Range: 0 to 1.
DesignLockedPrevents movement and resizing in the Designer without changing runtime interaction.
AccessibleDescriptionAdditional help text announced by assistive technology.
AccessibleRoleAccessibility role override. Auto preserves the native semantic role; explicit values use the corresponding platform automation role.
AutomationIdStable automation identifier; empty uses the component Name.
TabStopWhether Tab navigation can move focus to this DataGrid.
ToolTipTextHelp text shown when the pointer rests over the running control; empty disables the tooltip.
TagApplication-defined text associated with this control; McBasic™ does not interpret it.
RowHeightHeight of each data row in device-independent points (18–200).
Range: 18 to 200.
KeyColumnOptional unique BindingSource column used for SelectedKey and row identity. The key column is hidden in the grid; empty shows all columns.
ColumnsVisible BindingSource columns in display order, separated by commas. Write name|Header to show a header caption, for example status|Status,due_date|Due date; the grid still binds, edits and saves through the column name. Empty generates all columns; KeyColumn stays hidden.
FilterColumnColumn searched by the local filter. Empty searches visible columns. Only rows already loaded in the BindingSource are searched.
FilterTextCase-insensitive text contained in loaded rows; empty disables local filtering. This does not filter or page the SQLite provider.
LoadingShows the loading state while BASIC is fetching a BindingSource. Clear when the asynchronous operation finishes.
LoadingTextMessage shown while Loading is true, unless ErrorText is set.
EmptyTextMessage shown when the bound result has zero rows and no loading or error state is active.
ErrorTextNonempty error message shown over the grid until BASIC clears it. Errors take priority over loading and empty states.
IsReadOnlyWhen false, cell text is validated against the existing BindingSource value kind and kept in its in-memory edit buffer.
CanUserSortColumnsAllows local column sorting in the standard DataGrid.
CanUserResizeColumnsAllows local column resizing in the standard DataGrid.
HeadersVisibleShows column headers for the bound result.
AlternatingRowBackColorBackground of every second row as #RRGGBB; empty paints all rows alike.
GridLinesLines between cells: None, Horizontal (between rows), Vertical (between columns) or Both.
FrozenColumnsNumber of leftmost columns that stay in place when the grid scrolls sideways.
Range: 0 to 1000.
ShowRowNumbersShows 1-based row numbers in a header column. HeadersVisible still controls the column headers.
IndexPosition 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.
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.
Occurs after the effective selection changes.
Private Sub control_SelectionChanged()No parameters.
Occurs once for a pressed data cell; indexes are zero-based source-row and visible-column indexes.
Private Sub control_CellClick(ByVal RowIndex As Integer, ByVal ColumnIndex As Integer)| Parameter | Type | Direction |
|---|---|---|
RowIndex | Integer | ByVal |
ColumnIndex | Integer | ByVal |
Occurs for a double-clicked data cell; indexes are zero-based source-row and visible-column indexes.
Private Sub control_CellDoubleClick(ByVal RowIndex As Integer, ByVal ColumnIndex As Integer)| Parameter | Type | Direction |
|---|---|---|
RowIndex | Integer | ByVal |
ColumnIndex | Integer | ByVal |
Occurs before cell editing starts; set Cancel to True to prevent editing.
Private Sub control_CellBeginEdit(ByVal RowIndex As Integer, ByVal ColumnIndex As Integer, ByRef Cancel As Boolean)| Parameter | Type | Direction |
|---|---|---|
RowIndex | Integer | ByVal |
ColumnIndex | Integer | ByVal |
Cancel | Boolean | ByRef |
Occurs after cell editing finishes, whether committed or cancelled.
Private Sub control_CellEndEdit(ByVal RowIndex As Integer, ByVal ColumnIndex As Integer)| Parameter | Type | Direction |
|---|---|---|
RowIndex | Integer | ByVal |
ColumnIndex | Integer | ByVal |
Occurs after a committed data cell value changes; indexes are zero-based.
Private Sub control_CellValueChanged(ByVal RowIndex As Integer, ByVal ColumnIndex As Integer)| Parameter | Type | Direction |
|---|---|---|
RowIndex | Integer | ByVal |
ColumnIndex | Integer | ByVal |
Occurs when keyboard navigation or pointer input changes the current cell.
Private Sub control_CurrentCellChanged()No parameters.
Occurs when the current cell enters a different zero-based source row.
Private Sub control_RowEnter(ByVal RowIndex As Integer)| Parameter | Type | Direction |
|---|---|---|
RowIndex | Integer | ByVal |
Occurs when the current cell leaves a zero-based source row.
Private Sub control_RowLeave(ByVal RowIndex As Integer)| Parameter | Type | Direction |
|---|---|---|
RowIndex | Integer | ByVal |
Occurs for a completed column-header click, even when user sorting is disabled; ColumnIndex is zero-based.
Private Sub control_ColumnHeaderClick(ByVal ColumnIndex As Integer)| Parameter | Type | Direction |
|---|---|---|
ColumnIndex | Integer | ByVal |
Occurs before local user sorting; set Cancel to True to keep the current row order.
Private Sub control_Sorting(ByVal ColumnIndex As Integer, ByRef Cancel As Boolean)| Parameter | Type | Direction |
|---|---|---|
ColumnIndex | Integer | ByVal |
Cancel | Boolean | ByRef |
Occurs after an accepted local user sort has updated the grid view.
Private Sub control_Sorted(ByVal ColumnIndex As Integer)| Parameter | Type | Direction |
|---|---|---|
ColumnIndex | Integer | ByVal |
Occurs when cell conversion or binding rejects a value; set Handled to True to suppress the standard error presentation.
Private Sub control_DataError(ByVal RowIndex As Integer, ByVal ColumnIndex As Integer, ByVal Message As String, ByRef Handled As Boolean)| Parameter | Type | Direction |
|---|---|---|
RowIndex | Integer | ByVal |
ColumnIndex | Integer | ByVal |
Message | String | ByVal |
Handled | Boolean | ByRef |
Occurs when runtime drag data enters this control; set Effect to Copy, Move, Link or None.
Private Sub control_DragEnter(ByVal Data As DragData, ByRef Effect As DragEffect, ByVal X As Double, ByVal Y As Double)| Parameter | Type | Direction |
|---|---|---|
Data | DragData | ByVal |
Effect | DragEffect | ByRef |
X | Double | ByVal |
Y | Double | ByVal |
Occurs while runtime drag data moves over this control; Effect may be updated for the current position.
Private Sub control_DragOver(ByVal Data As DragData, ByRef Effect As DragEffect, ByVal X As Double, ByVal Y As Double)| Parameter | Type | Direction |
|---|---|---|
Data | DragData | ByVal |
Effect | DragEffect | ByRef |
X | Double | ByVal |
Y | Double | ByVal |
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.
Private Sub control_DragOver(ByVal Source As Control, ByVal X As Single, ByVal Y As Single, ByVal State As Integer)| Parameter | Type | Direction |
|---|---|---|
Source | Control | ByVal |
X | Single | ByVal |
Y | Single | ByVal |
State | Integer | ByVal |
Occurs when runtime drag data leaves this control without a drop.
Private Sub control_DragLeave()No parameters.
Occurs when runtime drag data is dropped on this control with a stable McBasic™ effect and local DIP coordinates.
Private Sub control_Drop(ByVal Data As DragData, ByVal Effect As DragEffect, ByVal X As Double, ByVal Y As Double)| Parameter | Type | Direction |
|---|---|---|
Data | DragData | ByVal |
Effect | DragEffect | ByVal |
X | Double | ByVal |
Y | Double | ByVal |
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.
Private Sub control_DragDrop(ByVal Source As Control, ByVal X As Single, ByVal Y As Single)| Parameter | Type | Direction |
|---|---|---|
Source | Control | ByVal |
X | Single | ByVal |
Y | Single | ByVal |
Occurs when a pointing-device button is pressed over this control; Button is stable McBasic™ identity and X/Y are control-local DIP coordinates.
Private Sub control_MouseDown(ByVal Button As MouseButton, ByVal Shift As KeyModifiers, ByVal X As Double, ByVal Y As Double)| Parameter | Type | Direction |
|---|---|---|
Button | MouseButton | ByVal |
Shift | KeyModifiers | ByVal |
X | Double | ByVal |
Y | Double | ByVal |
Occurs when a pointing-device button is released for this control; Button is stable McBasic™ identity and X/Y are control-local DIP coordinates.
Private Sub control_MouseUp(ByVal Button As MouseButton, ByVal Shift As KeyModifiers, ByVal X As Double, ByVal Y As Double)| Parameter | Type | Direction |
|---|---|---|
Button | MouseButton | ByVal |
Shift | KeyModifiers | ByVal |
X | Double | ByVal |
Y | Double | ByVal |
Occurs when the pointer moves over the logical McBasic™ control; Button contains the currently held buttons and X/Y are local DIP coordinates.
Private Sub control_MouseMove(ByVal Button As MouseButtons, ByVal Shift As KeyModifiers, ByVal X As Double, ByVal Y As Double)| Parameter | Type | Direction |
|---|---|---|
Button | MouseButtons | ByVal |
Shift | KeyModifiers | ByVal |
X | Double | ByVal |
Y | Double | ByVal |
Occurs once when the pointer enters the effective bounds of the logical McBasic™ control.
Private Sub control_MouseEnter()No parameters.
Occurs once when the pointer leaves the effective bounds of the logical McBasic™ control.
Private Sub control_MouseLeave()No parameters.
Occurs for normalized pointer-wheel input; Delta is portable, and X/Y are local DIP coordinates.
Private Sub control_MouseWheel(ByVal Delta As Double, ByVal Shift As KeyModifiers, ByVal X As Double, ByVal Y As Double)| Parameter | Type | Direction |
|---|---|---|
Delta | Double | ByVal |
Shift | KeyModifiers | ByVal |
X | Double | ByVal |
Y | Double | ByVal |
Occurs once when the DataGrid receives effective keyboard focus.
Private Sub control_GotFocus()No parameters.
Occurs once when the DataGrid loses effective keyboard focus.
Private Sub control_LostFocus()No parameters.
Occurs when a physical key is pressed while this control owns effective keyboard focus; setting Handled suppresses normal processing.
Private Sub control_KeyDown(ByVal KeyCode As KeyCode, ByVal Shift As KeyModifiers, ByRef Handled As Boolean)| Parameter | Type | Direction |
|---|---|---|
KeyCode | KeyCode | ByVal |
Shift | KeyModifiers | ByVal |
Handled | Boolean | ByRef |
Occurs for committed Unicode text input; set Handled to suppress the control default.
Private Sub control_KeyPress(ByVal Character As String, ByRef Handled As Boolean)| Parameter | Type | Direction |
|---|---|---|
Character | String | ByVal |
Handled | Boolean | ByRef |
Occurs when a physical key is released while this control owns effective keyboard focus; setting Handled suppresses normal processing.
Private Sub control_KeyUp(ByVal KeyCode As KeyCode, ByVal Shift As KeyModifiers, ByRef Handled As Boolean)| Parameter | Type | Direction |
|---|---|---|
KeyCode | KeyCode | ByVal |
Shift | KeyModifiers | ByVal |
Handled | Boolean | ByRef |
Sub SetFocus()Call on your instance: grdProducts.SetFocus.
20f4bfed6b · Build manifest