piDogDataView
 + 
Notes
Release Notes
1.8.2.1
[Mac] DatePicker now allows selecting currently selected date to dismiss
[All] DatePicker and PopupMenu now fire Action, Changed and CellTextChanged as appropriate
[All] Added SortedColumn for ListBox compatibility
[All] Added ScrollbarVertical and ScrollbarHorizontal for Listbox Compatibility
[All] ActiveCell now returns the current editing cell
[All] Cells with overlapping cells due to colspans now render correctly when resizing and reordering
[All] Fixed up some issues with editField when embedding DataView in a containerControl
1.8.2
[New] Added cellPicture functionality
[All] Added support for Page Up/Down and Home/End keys
[All] Resizing columns now much faster and smoother
[All] Resizing columns with % or * values should no longer snap or bump after release
[All] Fix for dragging rows/cells not drawing rows, or drawing wrong rows.
[All] Fixes for gridline locations when resizing columns.
[Bug] GridX no longer contains an extra coord in GridlinePaint event
[Win] [Bug] Fixed checkbox drawing with high-contrast and classic theme on Windows
[Win] [Bug] Fixed possible crash when resizing DateChooser columns on Windows
[Win] Native Scrollers and progressbars now drawn more accurately on Windows Classic and high contrast themes
[Linux] Fix for scrollers in HIDPI
[Linux][Win] Minor fixes for DateChooser
1.8.1
[New] Added AccessColumnsByInsertionOrder property to DataView
[New] Added HeadingTextColor, HeadingTextBold, HeadingTextFont, HeadingTextSize and HeadingTextItalic to listColumn
[New] Added more cell formatting options to listColumn class
[New] Added AllowsUnderflow property to always fill available width of the view
[Bug] GridlinePaint event now sets maxy to fill the control if a partial row is visible
[Bug] GridlinePaint event now includes gridX coords for locked columns
[Bug] Resizing, Resized, and ScrollingLayerSizeChanged events now available in DataView
[Bug] Fixed possible outOfBounds exception when editing a cell
[Bug] Fixed Issue where view would scroll on mouseClick if using Native Scrollers on Mac
[Bug] Fixes for drag and drop on an On-Demand list.
[Bug[ Calls inside DataView now refer exclusively to datasource for cell/column info.
[Bug] Fixed minor glitches in Embedded cellContainers
[Bug] SortColumn no longer tries to sort on column(0) on open
[Bug] Fixed possible crash on quit
[Bug] Fixed some issues with column resizing
[All] Reorganized some inspector settings for ease of setup
[All] CellTextHeight now accounts for CellPadding
[All] Cancelling a Dragreorder by pressing escape now restores the list correctly again.
[All] Scrollers no longer apear when not needed.
[All] Now allows setting Various text formatting on checkbox, popup and datechooser cells.
[All] Embedded Containers now behave when resizing the window after clicking a container.
[All] TimerPDS now works correctly when dropped on a window
[All] Minor improvement in folder expand/collapse animation
[All] Added cellBackgroundPaintEnabled property to improve efficiency when only standard cell painting is needed
[All] RowHeight now returns defaultRowHeight if no row parameter is passed
[All] Added CellTextPaintEnabled property to improve performance when using standard cell painting
[All] Calendar and PopupMenus now fire on mouseup to allow dragging in popupmenu and calendar cells
[Mac] Minor optimization to cell rendering
[Mac] Resizing no longer causes unwanted scrolling
[Mac] Resizing with NativeScrollers no longer leaves blank area to right of scrolling area
[Mac] Resizing larger with view scrolled to the right no longer leaves empty space
[Win] Fixed a bug preventing running a project using DataView under Xojo 2015.*
[Win] Fixed blurry text on Windows
[Win] More Windows fixes for Xojo 2016r4
[Win] Now builds with Xojo 2014r2.1 again
[Win] Updated control rendering under classic and high contrast themes to work correctly
[Linux] Fixed an issue with rendering during multislect
1.8.0
[New] Added ColumnResizingMode to specify the resizing behavior when resizing the control. ie a window resize
[New] Added ColumnResizingUserMode to specify the behavior when the user is resizing a column by dragging the separator
[New] Added AutoResizeable to listColumn to allow exclusion of a column from autoresizing behavior.
[New] Added AllowsOverflow. True causes a horizontal scroller to be added when all columns are at minimum widths.
[New] Now uses textarea for multiline cells and textfield for truncated cells
[New] Added CellTextWrapMode and ListColumn.TextWrapMode
[New] Added ContextualMenu Support to Headings
[New] Added HeadingConstructContextualMenu and HeadingContextualMenuAction
[New] Added ListColumn.HeadingAlignment
[New] Added DrawInto method with optional hidescrollers parameter
[New] Added ColumnResize Event
[New] Added DragCells event
[New] Added accessor for cellBackgroundColor
[Change] GridlinePaint no longer includes coords obscured by locked columns
[Change] Removed ColumnWidthExpression. Use Column().WidthExpression instead.
[Change] Added CellLostFocus Event
[All] Fixed stackoverflow when dragging from an embedded dataView
[All] Fixed bad printing with multiline enabled
[All] Checkbox cells now truncate correctly again
[All] Fixed possible gap in background fill when zoom<>1
[All] CellEdited now fires as expected
[All] CellKeyDown now fires as expected
[All] CellAction And Change events now fire when the user selects a date in a dateChooser cell
[All] Improved selection speed when list contains millions of rows
[All] Column reorder animation now more natural
[All] Now allows mouse actions to pass through above top of vert scroller. (In header)
[All] Added DrawInto method with optional hidescrollers parameter
[All] Fixed stackoverflow when dragging from an embedded dataView
[All] Fixed bad printing with multiline enabled
[All] Added listColumn.Hidden property
[Mac] Some fixes for NSScroller scroll-on-drag
[Mac] Fixed a bug preventing backdropimage and backgroundpattern being drawn in 64bit builds
[Mac] Fixed vertical alignment when font is not found
[WIndows] Fixes for HIDPI mode
[Linux] Fixed a glitch in Linux scrolling when CellEdit scrolls out-of-view
[Linux] Added support for display scaling
[Linux] CellEdit now scrolls with the view nicely
1.7.1.2
[Mac] Fixed a crash using decimalAlignment
[Windows] Fixed a crash using the scrollwheel
1.7.1.1
[Mac] Fix for NSScroller positioning when user preference is "always"
1.7.1
[Change] Added ColumnByTitle function
[Change] DropObject event is now CellDropObject
[Change] Now compatible with Xojo 2013r1 and later
[All] Misc scrollers issues fixed.
[WIN] Fixed DateChooser for Windows 64bit
[Win] [Linux] Better handling of System Font and Size
[Mac] NSScroller issues fixed
[Mac] Now renders system headers as pressed when clicked.
1.7.0
[Demo] Added helptags to demo window for many of the available settings
[Change] Added usesAlternatingBackgroundColors
[Change] Added RowSpan capability
[Change] Added addgroup method
[Change] Added cellAlignment
[All] Added DragOut event with XML representation of dragged rows allowing dropping in another DataView.
[All] Fixed EditPasteHandler event
[All] Setting ListIndex now moves current keyboard navigation point
[All] Improved TimerPDS to prevent possible unreleased instances.
[All] Now updates ScrollBar positions when setting scrollposition programatically.
[ALL] Major improvements to CellContainer behavior and rendering!
[All] UsesSystemColors now use the system's themed header frames
[All] Much more work on system theme color compliance
[All] Added SnapBackDuration
[All] TimerPDS now resets to zero after firing when mode=1
[Mac] Fixed drag-to-scroll using NSScrollers
[Mac] Improved shadows/translucency for dragged rows/columns
[Mac] Added native headings
[Linux] ProgressBars PopupMenus and Checkbox cells now render with correct theming
[Linux] CellContainers now fully supported
[Linux][Win] Scrollwheel events now handled natively
[Linux][Win] Headers now support MouseOver state coloring.[Mac] Improved performance of NSScrollers
[Win] Reduced flicker when resizing
[Win] Fixed possible crash under win32 when embedding containers
[Win] Improved responsiveness significantly
1.6.1
[Change] Added CellContainer for individual cells
[Change] Added ColumnSpan for individual cells.
[Mac] Fixed VibrantHeader to not require usesSystemColors
[Mac] Fixed text rendering after drawing a container
[Win] Improved Windows container handling (No longer considered beta)
[All] Group headings now render independent of zoom/h-scrolling
[All] Moved DataViewInternals to Internals.DataViewInternals And DataSource too
[All] Fixed Memory Issue where handler was not removed at close
[All] Inspector color values now respected again
[Demo] Added DataViewContainer
1.6
Added column reordering with events:columnDrag, ColumnDragTo and ColumnReorder.
Added cellContainer functionality via column.cellcontainer (not fully supported for linux/windows)
CellContainer has properties:row,column,view and events:populateValues and depopulateValues (see examples)
Now relies completely on timerPDS rather than Xojo Timer.
Rendering views with progressBars is now much faster.
Scrolling feel improved
Scrollwheel offset increased under windows
Fixed spacing of win32 headers
Added compareRows event
cellBackgroundPaint and CellTextPaint now clip the graphics context properly
Retina handling is now transparent in CellBackgroundPaint and CellTextPaint (same as drawing to a window context)
1.5.3.1
Fixed build error
1.5.3
Fixed build error for mac 64bit
Now updates scrolling when dataSource assignment is made
1.5.2
Fixed a Mac exception related to LockFocus
Fixes for rendering not working correctly for Win32
Changed SortColumn to SortedColumn
Fixed row caching to have upper limit to prevent excessive memory consumption
Fixed an issue where adding a row could redraw the wrong area and leave the view blank
1.5.1
Multiple fixes for inspector values not being available in IDE
Fixed animation not working on win32
1.5
Added printing support via printPage method.
Fixed A crash in column resizing.
Changes made to objects returned from DataView.Column() are now applied to the view.
Moved CellEdit to use a TextArea rather than the custom control previously used.
General improvements to speed and xplat consistency.
Fixes regarding Raster mode for scrolling canvas
UseNSScrollers changed to UseNativeScrollers (Windows now optionally uses Windows style scrollers)
Added DataView.CellPadding
Added DataView.RectFromCell
Added DataView.ViewRectFromCell
Added piDogScrollingCanvas.TranslatePointToView
Added piDogScrollingCanvas.TranslateRectToView
Added Native Scrollers for Windows
More improvements for Retina support
Fixed Shadow Color for Drag Reorder on Mac 64bit builds
Innumerable internal improvements to efficiency and stability
1.4.1
Added StaticHeader to lock header to top of the control
Added EnableVibrantHeader for a Finder-like effect on OSX 10.10+
Added DisableVerticalBounce and DisableHorizontalBounce
More rendering/scrolling/animation improvements
Vastly improved performance when many columns (>100) are used
1.4.0
64bit compatible!
Fixed an issue dragging groups. Now groups collapse on drag and re-expand on drop.
Fixed a memory leak due to min/max used in for/next conditional
Fixed memory consumption due to some cached rows not being recycled
Improved rendering time and responsiveness
Finished folder animations with locked columns
Finished DragReorder with Locked Columns
Fixed Mac HelpTags
Fixed bug in locked columns causing vertical scrolling to fail
Added "Drop-In" Folder AnimationStyle
Added FolderAnimationDuration property
Fixed subrow offsets for group expand/contract
Added DataSource subclass to expose available methods to override in a subclass
Added multiline support!
Updated celledit to support multiline text.
Moved all relevant constants into the DataView class for consistency
Linux Controls now rendered via ContainerControl to allow for immediate display
Fixed Vibrancy
1.3.2
fixed an error accessing column properties
fixed a crash when columncount exceeds columns in initialValue
added EditCell function
1.3.1
Win32 font problems fixed
Fixed a possible StackOverflowException when resizing a column with editfield visible
piDogScrollingCanvas:
-Fixed an issue with scrollerbounds not adjusting correctly
-ScrollerBounds property removed
-AdjustScrolerBounds event added
-Window resizing flicker fixed
-Win32 rendering/scrolling improved
-SnapBackDuration replaced with ScrollWheelDuration
1.3
Added LockColumns property to allow a number of columns to be locked to left edge.
Added ColumnFormatString to allow direct formatting of values without modifying values
Fixed issues with scrollpast coords
Added CellMouseEnter and CellMouseExit
Added CellHelpTag
Now uses System Font by default on Win32
Fixed popupMenu offsets when embedded in containers
Fixed issue where scrollers could draw chunks of header in the wrong place on Linux
Added Sort() function
Added ColumnHeading() functions
Added basic editing functionality to the DBDataSource Demo Window
Added documentation to some properties of the DataView Class
Added standard mouse Events to piDogScrollingCanvas
Added Cell formatting options. CellFont CellBold CellItalic CellTextColor CellTextSize CellBackgroundColor
Added AlignDecimal and ColumnAlignmentOffset
Added Columns() function (read only for now) to get column widths.
1.2
Optimized optimized optimized.
Moved DataView to DataViewInternals, and added a DataView Wrapper Class to expose methods/properties more clearly
You can now use a transparent color as a backgroundColor to allow window color to show throught
Rows are now rendered as segments to allow for effective width greater than 30,000 pixels and better dragrow animation with many columns
Scrolling now mimicks nsscrollView more precisely
MouseWheel can now be used to "Scroll past" the edge of the list
Added changed and cellAction events when popup menus are changed
Linux ProgressBars now render all value at once to avoid most display delay.
Added dragover and dropobject events
More vibrancy fixes
Improved animations
More improvements to popupmenu allignment
Improved rowPicture allignment and scaling
DisclosureTriangles now render in light/dark color depending on the TextColor.
Folder animation now caches animated rows for better look when using non-opaque background colors
Demo now shows render time and actual frames to screen.
Editable cells now accept accented characters on Mac
Editable cells now allow dragging of selected text.
Editable cells no longer allow cursor to move past 0 when delete key pressed with cursor at 0
Fixed copy action during cell editing to copy the correct range.
Scrollers now use native drawing calls to render (all platforms)
Overrides isCompatibleWithOverlayScrollers to return true (setable property)
Added option to disable NSScroller tracks
DragReorder now properly considers height of row after drop to determine new index
Now has internal MouseDrag and MouseUp handling
Fixed Windows checkboxes to render precisely
Windows progressbars height now based on half theme size
Scrollers now have elastic compression on scrollpast (all platforms)
Fixed an issue where NSScrollers would jump to the top when a folder was collapsed
Fixed a situation where cached pictures were not cleared before reuse.
1.1.1
Fixed an exception when DataView is added to a containerControl
Fixed scaling artifacts when resizing header
Fixed popup menu positioning when zoom <> 1
Fixes some issues with enabling vibrancy
PrettyZoom setting is now respected again.
1.1
Added Vibrancy to piDogScrollingCanvas, DataView inherits it.
DataSource is now properly released when a DataView is closed.
Numerous internal fixes and optimizations.
Fixes for retina compatibility.
Improved accuracy of popupmenu placement.
Added InsertColumn/RemoveColumn.
Added GridlinePaint event.
1.0.3
Fixed an issue where prerender timer could try to prerender all rows causing high memory use and poor performance.
Added truncateText property to allow disabling of text truncation
Text rendering now uses CoreText on MacOS for HUGE speed improvements
Shadow rendering now uses CoreGraphics on MacOS for more responsive drags
Fixed a bug where resizing a column to 0 would lead to an exception.
Fixed a bug where zoom gestures could fail after a DragItem was created.
Now renders checkboxes as disabled when window loses focus
Added progress celltype/columntype
1.0.2
Fixed exception in ConstructContextualMenu when an empty cell is clicked
ConstructContextualMenu now passes -1,-1 for row,column when an empty cell is clicked
RowPictures now refuse to scale above 100% when rowheight/cellheight are set
toXML and fromXML now include celltype, cellcheck, and (optionally) rowpicture
DisclosureTriangles are now animated
CollapseRow animation now correctly renders subrows
1.0.1
Fixed Folder expansion animation
Added background caching of some offscreen rows for better scrolling feel
Fixed a bug adding rows from a thread in the demo window
Fixed CellBGPaintEnabled to default to true
Fixed a potential crashing bug in dragReorder
Added Cell(-1,-1) functionality for better compatibility with Xojo Listbox
1.0
Initial release!
piDogDataView.CellContainer
 + 
Super
ContainerControl
 + 
Notes
Usage
A CellContainer is a container control that can be used as an interface in a cell in a dataView.
To create your own custom cell containers:
1) Use piDogDataView.CellContainer as the super of a containerControl. Layout the container in the IDE as usual.
2) Handle the PopulateValues event to load values from the DataView or other data storage mechanism
into the controls in the container.
3) Handle the DepopulateValues event to set the container to default values and read
any changes the user has made back into the dataView or other data storage mechanism.
-) Access me.row and me.column to determine the row/column the container will display / is displaying.
-) Access the parent DataView via me.View
-) Set me.WantsEvents to false to prevent interaction and create a display-only container (from the users perspective)
 + 
Events
DepopulateValues
Fires when the cell has lost focus. Any changed values should be set in the DataView (me.view)
PopulateValues as Boolean
Fires when the cell is about to be drawn. Set controls to represent values stored in the DataView (me.view)
 + 
Properties
Column As Integer = -1
The column number where the container exists
isActiveCell As Boolean
Row As Integer = -1
The row where the container exists
View As piDogDataView.DataView
The DataView where the container exists
WantsEvents As Boolean = true
Whether the user should be able to interact with the container. Otherwise read only (from the user's perspective)
piDogDataView.CustomDataSource
 + 
Super
piDogDataView.Internal.DataSource
 + 
Notes
Usage
A CustomDataSource is a clas that can be subclassed to create a custom/on-demand DataSource.
You can create a subclass of CustomDataSource and override methods as desired.
Browse the methods for brief documentation about each method available for overriding.
Important! - To create an on-demand dataSource, you must pass false when setting the count property, ie mydatasource.count(false)=0.
By doing this, you are responsible for keeping track of selections, and any row reordering that occurs.
This can be a much more complicated task and is only recommended if displaying data from a database.
Otherwise a "managed" DataView/DataSource is recommended.
See the examples CustomData,FileData and DBDataSource in the MainDemoItems, FileBrowserDemo and DataBaseDemo folders for examples.
DBDataSource is unmanaged, the others are custom managed DataSources.
 + 
Methods
Sub cancelRowPickup()
Called when the user cancels a drag reorder operation by pressing esc.
Function CellCheck(row as Integer, column as integer) As Boolean
override to specify cellcheck value
Function CellCheckEnabled(row as Integer, column as integer) As Boolean
override to specify if the checkbox is enabled
Function CellFormat(row as integer, column as integer) As Dictionary
override to specify the cellformat dictionary
available values include
piDogDataView.DataView.CellFormatBackgroundColorKey as Color
piDogDataView.DataView.CellFormatBoldKey as Boolean
piDogDataView.DataView.CellFormatFontKey as String
piDogDataView.DataView.CellFormatItalicKey as Boolean
piDogDataView.DataView.CellFormatTextColorKey as Color
piDogDataView.DataView.CellFormatTextSizeKey as Integer
Function CellHasHeight(row as integer, column as integer) As Boolean
Override to allow cellHeight checking for a cell
Function CellHeight(row as Integer, column as integer) As integer
Override to specify as height for the cell
Function CellHelpTag(row as Integer, column as integer) As String
Override to specify as helptag for a the cell
Function CellTag(row as Integer, column as integer) As Variant
Override to specify as celltag for a cell
If the cell is a popup menu, either the celltag or columntag should be a piDogDataView.OptionList
Function CellText(row as Integer, column as integer) As string
Override to provide a text value for the cell
Function CellType(row as Integer, column as integer) As integer
Override to specify the type of the cell
Values include:
piDogDataView.DataView.TypeDefault
piDogDataView.DataView.TypeNormal
piDogDataView.DataView.TypeCheckBox
piDogDataView.DataView.TypeEditable
piDogDataView.DataView.TypeProgress
piDogDataView.DataView.TypePopup
Function CellValue(row as Integer, column as integer) As Variant
Override to specify the value of a cell (variant)
Function ChildCount(row As Integer) As Integer
Override to specify the number of child rows below a folder
Sub ClearSelections()
Override to handle deselecting all rows
Sub CollapseSelectedRows()
Override to handle collapsing any expanded rows currently selected
Called in preparation for row drag
Function ColumnAlignment(index as integer) As integer
override to specify Alignment for a column
Values include
piDogDataView.DataView.AlignDefault
piDogDataView.DataView.AlignLeft
piDogDataView.DataView.AlignCenter
piDogDataView.DataView.AlignRight
piDogDataView.DataView.AlignDecimal
Function ColumnCount() As integer
Override to specify the number of columns
Function ColumnFormatString(index as integer) As String
override to specify a format string for the column
the string should follow the specification for the format command
Function ColumnHeading(column as integer) As String
Override to specify the heading title for a column
Function ColumnTag(index as integer) As Variant
Override to specify as celltag for a column
If the cell is a popup menu, either the celltag or columntag should be a piDogDataView.OptionList
Function ColumnType(index as integer) As integer
Override to specify the type of the cell
Values include:
piDogDataView.DataView.TypeDefault
piDogDataView.DataView.TypeNormal
piDogDataView.DataView.TypeCheckBox
piDogDataView.DataView.TypeEditable
piDogDataView.DataView.TypeProgress
piDogDataView.DataView.TypePopup
Function Count() As Integer
override to specify the number of rows to be displayed
for an on-demand dataView
Sub Count(managed as Boolean = true, assigns value as integer)
When setting up a datasource, assigning a value to Count
will normally cause the DataSource to manage the data internally.
You can still override operations, such as cellText and SortByColumn
An on-demand setup should either not set the count property,
and override the count getter, or pass false as the 'managed'
parameter.
The later method causes the view to update automatically when the
list count is changed from elsewhere.
Function defaultRowHeight() As Integer
override to specify the default RowHeight
Sub DeleteAllRows()
override to handle removing all rows from the list
Function HasCellFormats() As Boolean
return true to allow cell formatting
Sub InsertPickedUpRowsAt(index as integer)
Override to handle dragReorder
Called when the user drops rows into the list
Function isFolder(row as Integer) As Boolean
override to specify rows as folders
Function isGroup(row as Integer) As Boolean
override to specify row as Group
Function ParentForDropAtRow(index as integer) As integer
override to specify a folder that will become the parent for a drop at the specified index
Function pickedUpGroup() As Boolean
return true if the picked up row is a group
Sub pickUpRow(row as integer)
override to handle dragreorder functions
Only called for dragging of groups
Sub pickUpSelectedRows()
override to handle dragreorder operations
Called when the user drags rows and/or folders
Sub raiseCellChanged(Row as integer, column as integer, scrollTo as Boolean = false)
Called to inform the dataView that the cell has changed and should be refreshed
Sub raiseCountChanged()
Called to inform the DataView that the number of rows has changed
Sub raiseDataChanged()
Called to inform the DataView that the list data has been modified and should be refreshed
Sub raiseRowChanged(row as integer, scrollTo As Boolean = False)
Called to inform the DataView that a row has changed and should be refreshed
Sub RemoveColumn(c as integer)
override to handle arequest to remove a column
Sub RemoveRow(row As integer)
override to handle a request to remove a row
Function RowDepth(index as Integer) As Integer
override to specify indetation level for a row
Function RowExpanded(row as Integer) As Boolean
override to specify the expanded state of a row
Sub RowExpanded(row as Integer, assigns value As Boolean)
override to handle expanding/collapsing of a row
Function RowHasCellHeight(row as Integer) As Boolean
overrideto specify whether a row contains cells with specified cell heights
Function RowHeight(index as integer) As integer
override to specify a height for the row
Function RowParent(row as integer) As integer
override to specify the parent row for a given row
Function RowPicture(row as Integer) As Picture
override to specify the picture for a given row
Function RowTag(row as Integer) As Variant
override to specify the tag for a given row
Function Selected(row As Integer) As Boolean
override to handle selection of rows
Sub Selected(row as integer, assigns value As Boolean)
override to handle row selection
Function Selected(row as integer, column As integer) As Boolean
override to handle cell selection
Sub Selected(row as integer, column As integer, assigns value As Boolean)
override to handle cell selection
Function SelectedCells() As pair()
override to return a list of selected cells
Function SelectedRows() As integer()
override to return a list of selected rows
Function SelectionCount() As integer
override to return the number of selected rows
Sub SortByColumn(column as integer, descending As Boolean)
override to handle column sorting
Function TotalRowsHeight() As integer
override to specify the overall height of the list in points
piDogDataView.DataView
 + 
Super
piDogDataView.Internal.DataViewInternals
 + 
Constants
AlignCenter
Center align cell text
AlignDecimal
Decimal align cells
AlignDefault
Default align or column align
AlignLeft
Left align cell text
AlignRight
Right align cell text
AnimationStyleDropIn
Drop-in style for folder expand/contract animations
AnimationStyleStandard
Standard animation for folder expand/contract
CellFormatAlignmentKey
Used to specify a text alignment for cell formatting
CellFormatBackgroundColorKey
Used to specify a background color for cell formatting
CellFormatBoldKey
Used to specify a bold font color for cell formatting
CellFormatFontKey
Used to specify a font for cell formatting
CellFormatItalicKey
Used to specify an italic font for cell formatting
CellFormatTextColorKey
Used to specify a text color for cell formatting
CellFormatTextSizeKey
Used to specify a text size for cell formatting
ColumnResizingModeDistributed
All columns will be resized proportionally when a literal value is specified and the column allows autoresizing
ColumnResizingModeLeftToRight
Columns are resized from left to right where the column allows autoresizing
ColumnResizingModeNone
Columns are not resized when a literal value is set
ColumnResizingModeRightToLeft
Columns are resized starting on the right when a literal width is set and the column allows autoresizing
ColumnUserResizingModePush
All columns will be resized proportionally when a literal value is specified and the column allows autoresizing
ColumnUserResizingModeShare
All columns will be resized proportionally when a literal value is specified and the column allows autoresizing
SelectionMultiple
Allow multiple selection
SelectionSingle
Allow only single selection
SortAscending
The ascending sort direction
SortDescending
The descending sort direction
SortNone
Unsorted
TextWrapModeDefault
Truncate text constant
TextWrapModeTruncate
Truncate text constant
TextWrapModeWrap
Wrap text mode
TypeCheckBox
Cell will contain a checkbox. Use CellChecked to set/get the value
TypeDateChooser
A DateChooser will be displayed to show a date. The user can click the date to access a calendar chooser
TypeDefault
The default value
TypeEditable
Cell can be edited by double click or click-and-hover
TypeEditableTextField
Same as TypeEditable
TypeNormal
The plain text cell type
TypePopup
A popupMenu will be displayed to select an availble option
TypeProgress
A progressbar will be displayed to show a percent 0.0-1.0
 + 
Events
CellAction(row as integer, column as Integer)
Fired when a cell value or checked state changes
CellBackgroundPaint(g as graphics, Row As integer,column as integer) as Boolean
Allows you to do the background painting. Return true if you've handled drawing.
CellClick(row as integer, column as integer, x as integer, y as integer) as Boolean
Fired when the user clicks a cell. Return true to handle the click
CellConstructContextualMenu(Base as MenuItem, row as integer, column as integer, x As integer, y as integer) as Boolean
A right click has occurred. Populate base to display a contextual menu.
CellContextualMenuAction(HitItem as MenuItem, row as integer,column as integer) as Boolean
A contextual menu item was selected.
CellDropObject(row as integer, column as integer, obj As DragItem, action as integer)
Will be fired when the user drops an object on the list after true was returned from dragover event.
CellGotFocus(row as integer, column as integer)
Fired when an editable cell gets focus.
CellKeyDown(row as integer, column as integer, key as String) as Boolean
Fired when the user is editing a cell. Return true to override
CellLostFocus(row as integer, column as integer)
Fired when a cell loses the focus
CellMouseDrag(row as integer, column as integer, x as integer, y as integer)
The Mouse was dragged after cellClick returned true. X and Y are relative to the top-left of the cell.
CellMouseEnter(row as integer, column as integer)
Fired when the mouse moves into the given cell.
CellMouseExit(row as integer, column as integer)
Fired when the mouse exits the given cell
CellMouseMove(row as integer, column as integer, x as integer, y as integer)
The mouse moved within the cell at row-column. X and Y are relative to the top-left of the cell.
CellTextChange(row as integer, column as integer)
Fired when a cell has bee edited
CellTextPaint(g as graphics, Row As integer,column as integer, x as integer, y as Integer) as Boolean
Allows you to do the text drawing youself. Return true if you've handled the event.
Change
Selection or data has been changed
Close
The control is closing
ColapseRow(row as integer)
Called when an expanded row is collapsed by the user.
ColumnDrag(column as integer) as Boolean
Handle this event to prevent dragging of a column by returning true
ColumnDragTo(column As integer, newIndex as integer) as Boolean
Handle this event to prevent dragging a column to newindex by returning true
ColumnReorder(oldindex as integer, newindex as integer)
Handle this event to be notified when a column has been moved by the user
ColumnResize(DraggingColumn as integer)
The user is resizing the column DraggingColumn
CompareRows(Row1 as integer, Row2 as integer, Column as integer, byref result as integer) as Boolean
Return true to use a custom sort order. Set Result to -1 the specify less-than, +1 for greater than and 0 for equal.
ConstructContextualMenu(base as MenuItem, x as integer, y as integer) as Boolean
Standard ContextualMenu functionality. See CellConstructContextualMenu for cell based function.
ContextualMenuAction(HitItem as MenuItem) as Boolean
Standard ContextualMenu Handler. See CellConstructContextualMenu for cell based function.
DepopulateCell(container as piDogDataView.CellContainer)
Called when a CellContainer needs to be reset to it's default state.
DoubleClick(row as integer, column as integer) as Boolean
The user double clicked a cell. Return true to handle it yourself.
DragOut(rows() as integer,obj as dragitem, byref removeFromList as boolean) as Boolean
Called when The user drags rows out of the control. Requires EnabelDrag to be set to True.
DragOver(row as integer, column as Integer, obj as DragItem, action as Integer) as Boolean
Return true from this event to receive a dropObject event when the user drops an object.
DragReorderRows(selectedRows() as integer, newPosition as integer) as Boolean
The user has dragged a row or group of rows to a new location. Return true to cancel the reorder and handle it yourself.
DropRows(byref insertionIndex as integer, obj as DragItem) as Boolean
Called when rows dragged out of a DataView have been dropper at insertionIndex. InsertionIndex can be modified to change destination. Return true to handle the operation and prevent default behavior
EditCopyHandler as Boolean
The Copy menu was selected
EditCutHandler as Boolean
The Cut menu was selected
EditPasteHandler as Boolean
The paste menu was selected
ExpandRow(row as integer)
Called when a row is expanded by the user. Rows added will be added as children of the expanding row.
getDataSource as piDogDataView.Internal.DataSource
Return a TableData object here to provide a data source during initialization and before the control opens.
GotFocus
The control has gotten focus
GridlinePaint(g as graphics, gridX() as integer, gridY() As Integer,minY as integer, maxY as integer)
This event is fired after the list is drawn and before the header is drawn. rects() represent the grid to draw.
HeaderPressed(column as integer) as Boolean
The user clicked a column header. return true to cancel.
HeadingBackGroundPaint(g as Graphics,Column as integer, colLeft as integer, colWidth as integer) as Boolean
Use this event to draw the header background. Return true if you've handled the event.
HeadingConstructContextualMenu(Base as MenuItem, column as integer, x As integer, y as integer) as Boolean
A right click has occurred. Populate base to display a contextual menu.
HeadingContextualMenuAction(HitItem as MenuItem, column as integer) as Boolean
A contextual menu item was selected.
HeadingTextPaint(g as Graphics,column as integer, x as integer, y As Integer) as Boolean
Use this event to draw the Header text. Return true if you've handled the event
KeyDown(key As String) as Boolean
A key was pressed. Return true to handle the event.
KeyUp(key as String)
A key was released. return true to handle the event
LostFocus
The control has lost the focus
MouseExit
The mouse has left the control
MouseWheel(x as integer, y as integer, deltax as integer, deltay as integer) as Boolean
The user has scrolled the control. return true to handle the event.
Open
The control is opening
PaintOverlayLayer(g as Graphics, area as REALbasic.Rect, zoom as double=1, xOffset as double=0, yOffset as double=0) as Boolean
Provides an oportunity to paint on the DataView after the standard painting has completed.
PaintScrollingLayer(g as Graphics,area As piDogGeometry.DoubleRect,zoom as double=1,xOffset As double=0,yOffset As double=0) as Boolean
area needs to be redrawn. g is the main graphics. m is the graphcs for masking under carbon/win32. Zoom is the scale. xOffset/yOffset should be subtracted from coordinates before drawing.
PopulateCell(Container as piDogDataView.CellContainer)
Called when a CellContainer needs to be updated to display the current data for a cell
RenderDraggedRows(Rows() As integer) as picture
Handle this event and return a picture if custom drag rendering is needed.
Resized
The Canvas was resized. Called after painting.
Resizing
The Canvas is resizing. Called before painting
ScrollingLayerSizeChanged
Use this event to make adjusments based on the size of the scrolling layer.
SortColumn(column as integer) as Boolean
The user has requested the list to be sorted by the column indicated. Return true to handle the sort.
ZoomChanged
The zoom factor of the control has changed.
 + 
Methods
Sub AddColumn(width as string, heading as string)
Add a new column to the right side of the list
Sub AddFolder(title As String)
Adds a new folder to the list
Sub AddGroup(title As String,expand As Boolean=true,tag as variant=nil)
Adds a new group to the list
Handle RowExpanded to add rows to the group
Sub AddRow(paramarray titles as String)
Adds a new row to the list
Sub AddRow(titles() as String)
Adds a new row to the list
Sub Cell(row As integer, Column as Integer, assigns value as Variant)
Set the value of the cell (variant)
This value can be of any type
will be Rendered using str(value)
Function Cell(Row As integer, Column As integer) As String
Get the text of the cell
Sub CellAlignment(row as integer, column as Integer, assigns value as Integer)
Set the allignment for the cell
Values include
piDogDataView.DataView.AlignDefault
piDogDataView.DataView.AlignLeft
piDogDataView.DataView.AlignCenter
piDogDataView.DataView.AlignRight
piDogDataView.DataView.AlignDecimal
Function CellBackgroundColor(row as integer, column as integer) As Color
Gets the BackgroundColor of the cell at row/column
Sub CellBackgroundColor(row as integer, column as integer, assigns value as color)
Sets the BackgroundColor of the cell at row/column
Sub CellBold(row as integer, column as integer, assigns value as Boolean)
Sets the Bold style for the cell if available
Function CellCheck(row as integer, column as integer) As Boolean
Get the checked value of the cell
Sub CellCheck(row as integer, column as integer, assigns value as Boolean)
Set whether the cell is Checked
Function CellCheckEnabled(row as integer, column as integer) As Boolean
Gets whether the cellcheck is enabled
Sub CellCheckEnabled(row as integer, column as integer, assigns value as Boolean)
Sets whether the cellcheck is enabled
Function CellContainer(Row As integer, Column As integer) As piDogDataView.CellContainer
Get the tag for the cell
Sub CellContainer(row As integer, Column as Integer, assigns tag as piDogDataView.CellContainer)
Set the Tag for the Cell
Sub CellFont(row as integer, column as integer, assigns value as String)
sets the font by name for the cell
Function CellHeight(row as integer, column as integer) As integer
Gets the height for the given cell
Sub CellHeight(row as integer, column as integer, animated as boolean = false, assigns value as integer)
Sets the height for the given cell
Function CellHelpTag(Row As integer, Column As integer) As String
Get the HelpTag for the cell
Sub CellHelpTag(row As integer, Column as Integer, assigns tag as String)
Set the HelpTag for the Cell
Sub CellItalic(row as integer, column as integer, assigns value as Boolean)
sets the italic style for the cell if available
Function CellPicture(Row As integer, Column As integer) As Picture
Get the picture for the cell
Sub CellPicture(row As integer, Column as Integer, assigns p as picture)
Set the picture for the Cell
Function CellState(row as integer, column as integer) As CheckBox.CheckedStates
Get the checked value of the cell
Sub CellState(row as integer, column as integer, assigns value as CheckBox.CheckedStates)
Set whether the cell is Checked
Function CellTag(Row As integer, Column As integer) As Variant
Get the tag for the cell
Sub CellTag(row As integer, Column as Integer, assigns tag as Variant)
Set the Tag for the Cell
Sub CellTextColor(row as integer, column as integer, assigns value as color)
sets the color of text in the cell at row/column
Function CellTextHeight(row as integer, column as integer) As integer
Returns the vertical space required to display wrapped text
Sub CellTextSize(row as integer, column as integer, assigns value as integer)
sets the size of text in the cell at row/column
Sub CellTextWrapMode(row As integer, Column as Integer, assigns mode as Integer)
Set the TextWrapMode for the Cell
Either TextWrapModeDefault, TextWrapModeTruncate or TextWrapModeWrap
Function CellTextWrapMode(Row As integer, Column As integer) As Integer
TextWrapMode for the celll
Either TextWrapModeDefault, TextWrapModeTruncate or TextWrapModeWrap
Function CellType(row as integer, column as integer) As integer
Get the type of the cell
Const TypeCheckBox = 2
Const TypeDefault = 0
Const TypeEditable = 3
Const TypeEditableTextField = 3
Const TypeNormal = 1
Const TypePopup = 5
Const TypeProgress = 4
Sub CellType(row As integer, Column as Integer, assigns value as integer)
Set the type of the cell
Const TypeCheckBox = 2
Const TypeDefault = 0
Const TypeEditable = 3
Const TypeEditableTextField = 3
Const TypeNormal = 1
Const TypePopup = 5
Const TypeProgress = 4
Function CellValue(Row As integer, Column As integer) As Variant
Get the value of the cell (variant)
Sub ClearSelections()
Deselect all rows/cells
Sub CollapseRow(row as integer)
Collapse the row
Function Column(index as integer) As piDogDataView.ListColumn
Gets a piDogDataView.ListColumn object containing width values for the column at index. Currently read-only.
Sub Column(index as integer,assigns col as piDogDataView.ListColumn)
Assigns a piDogDataView.ListColumn object containing width values for the column at index and refreshes the layout.
Function ColumnAlignment(column as Integer) As Integer
Get the current allignment of the column
Values include
piDogDataView.DataView.AlignDefault
piDogDataView.DataView.AlignLeft
piDogDataView.DataView.AlignCenter
piDogDataView.DataView.AlignRight
piDogDataView.DataView.AlignDecimal
Sub ColumnAlignment(column as Integer, assigns value as Integer)
Set the allignment for the column
Values include
piDogDataView.DataView.AlignDefault
piDogDataView.DataView.AlignLeft
piDogDataView.DataView.AlignCenter
piDogDataView.DataView.AlignRight
piDogDataView.DataView.AlignDecimal
Function ColumnAlignmentOffset(column as Integer) As Integer
Get the current allignment Offset of the column
Sub ColumnAlignmentOffset(column as Integer, assigns value as Integer)
Set the allignment Offset for the column
Function ColumnByTitle(title as String) As integer
Attempts to get a column's index from it's title
Function ColumnCheckAll(column as Integer) As Boolean
Get whether the column has a check all box in the header
For ColumnType=TypeCheckBox
Sub ColumnCheckAll(column as Integer, assigns value as Boolean)
Set whether the column will have a check all box in the header
For ColumnType=TypeCheckBox
Function ColumnCheckAllChecked(column As integer) As Boolean
Whether the user has checked the checkAll box
Function ColumnFormatString(column as Integer) As String
Get the current format string of the column
Same as the Xojo format() funtion
Sub ColumnFormatString(column as Integer, assigns value as String)
Set the format string for the column
Same as the Xojo format() funtion
Function ColumnFromXY(x As Integer, y As integer) As Integer
Get the column for the coordinates relative to the ScrollingLayer.
Function ColumnResizable(column as Integer) As Boolean
Get whether the column has a check all box in the header
For ColumnType=TypeCheckBox
Sub ColumnResizable(column as Integer, assigns value as Boolean)
Set whether the column will have a check all box in the header
For ColumnType=TypeCheckBox
Function ColumnSortDirection(Column as integer) As integer
The current sorting direction of the column.
+1=Ascending
-1=Descending
Sub ColumnSortDirection(Column as integer, assigns value as integer)
Sets the current sorting direction of the column.
+1=Ascending
-1=Descending
Function ColumnSpan(row as integer, column as Integer) As Integer
Get the number of columns the cell at row/column occupies
Sub ColumnSpan(row as integer, column as Integer, assigns value as Integer)
Set the number of columns the cell at row/column occupies
Function ColumnTag(index as integer) As Variant
gets the tag associated with a column
Sub ColumnTag(index as integer, assigns value as variant)
sets the tag for a column.
If the ColumnType is TypePopup, you can set an OptionList as the tag to be cloned for rows without an OptionList assigned.
Function ColumnType(column as Integer) As Integer
Get the type of the column
Const TypeCheckBox = 2
Const TypeDefault = 0
Const TypeEditable = 3
Const TypeEditableTextField = 3
Const TypeNormal = 1
Const TypePopup = 5
Const TypeProgress = 4
Sub ColumnType(column as Integer, assigns value as Integer)
Set the type of the column
Const TypeCheckBox = 2
Const TypeDefault = 0
Const TypeEditable = 3
Const TypeEditableTextField = 3
Const TypeNormal = 1
Const TypePopup = 5
Const TypeProgress = 4
Sub DeleteAllRows()
Remove all rows from the list
Sub EditCell(row as integer, column as integer)
Puts the cell into editing mode
Function EnableVibrancy(includeTitleBar as boolean ,wholeWindow as boolean ,Appearance as integer) As Boolean
Under MacOSX 10.10 calling this Method will enable vibrancy for the canvas and (optionally) the titlebar of the window
Appearance 0=default 1=light 2=dark 3=titlebar(brighter than light)
Sub EnableVibrantHeader()
Under MacOSX 10.10 calling this Method will enable vibrancy for the list header
Also forces staticHeader=true
Sub Expanded(row as integer, assigns value As Boolean)
Sets whether the row is expanded
Function Expanded(row as Integer) As Boolean
Whether the row is expanded
Sub fromXML(doc As XmlDocument, insertIndex as integer=-1)
Load the list from previously created XmlDocument
insertIndex allows loading an XML list into the control by inserting at the specified index. -1 will replace the current list.
Function HasCellHeights() As Boolean
Whether the list contains any cells with a custom height.
Function Heading(index as Integer) As String
Get the heading at index
Sub Heading(index as integer, Assigns value As string)
set the heading at index
Sub InsertColumn(afterColumn as integer, heading as string)
Add a column to the view and datasource after specified column
Sub InsertFolder(index as integer, s as string)
Adds a folder to the list at index
Sub InsertRow(index as integer, s() as string)
inserts a row into the list at index
Sub InsertRow(index as integer, s as string)
inserts a row into the list at index
Sub InvalidateAllCells()
Cause all cells to be rerendered
Sub InvalidateCell(row as integer, column as integer)
Cause a cell to be rerendered
Sub InvalidateRow(row as integer)
Cause all cells in the row to be rerendered
Function LastIndex() As Integer
The last row added to the list
Function List(row as integer) As String
Returns cell at row,0
Sub List(Row as integer, assigns value as String)
Sets the cell at row,0
Function ListCount() As integer
The number of items in the list
Sub ListCount(assigns value as integer)
Sets the list to have 'value' number of rows.
Use for on-demand Datasource subclass
Sub LockColumns(Count As integer)
Lock (Count) left columns so other columns can slide under when scrolling right.
Pass 0 to unlock all
Function PageCountForGraphics(g As Graphics) As integer
Gets the number of pages needed to fill g
Function PrintPage(g as Graphics, startRow as integer=0, columns() as integer=nil, DrawHeader as Boolean=true, drawBackground as boolean=False, exposeAllText as Boolean=true, scale as Double=1) As integer
Call to print a page to g (graphics) beginning with startRow.
optionally-
columns() designates the set of columns to print or nil for all columns
drawHeader determines whether the header will print for the current page
drawBackground determines whether the background of rows and header will be printed
exposeAllText determines whether the rowheights will be adjusted based on their content
scale allows you to render the list smaller/larger than it would otherwise be.
Returns the index of the last row to fit in the graphics passed in to allow multipage breaking.
PrintPage does not clip rows (it only prints rows that wholly fit in the graphics context).
Function RectFromCell(row as integer, column as integer) As REALbasic.Rect
Returns a REALbasic.Rect representing the bounds of the cell at row,column
Sub RemoveColumn(thecolumn as integer)
Remove the column from the view and datasource
Sub RemoveRow(therow as integer)
Remove the row from the list
Sub RowExpanded(row as integer, assigns value As Boolean)
Sets whether the row is expanded
Function RowExpanded(row as Integer) As Boolean
Whether the row is expanded
Function RowFromXY(x as integer, y as Integer) As integer
The row located at x,y in the ScrollingLayer coords
Function RowHeight(index as Integer=-1) As Integer
Gets the height of the row as index
Sub RowHeight(index as integer, assigns value As integer)
Sets the height of the row at index
Function RowIsFolder(row as Integer) As Boolean
Sets the row as a iHierarchical folder.
Sub RowIsFolder(row as integer, assigns value as Boolean)
Sets whether the row is a iHierarchical folder
Function RowIsGroup(row as Integer) As Boolean
Whether the row as a group folder.
Sub RowIsGroup(row as integer, assigns value as Boolean)
Sets whether the row as a group folder.
Function RowIsVisible(row as integer) As Boolean
checks whether a row is currently displayed
Function RowPicture(row as integer) As picture
The Picture assigned to the row
Sub RowPicture(row as integer, assigns p as Picture)
Assign a picture to the row
Function RowSpan(row as integer, column as Integer) As Integer
Get the number of rows the cell at row/column occupies
Sub RowSpan(row as integer, column as Integer, assigns value as Integer)
Set the number of rows the cell at row/column occupies
Function RowTag(Row as integer) As Variant
The tag associated with the row
Sub RowTag(Row as integer, assigns tag as Variant)
Associate a tag with a row
Sub ScrollCellIntoView(row As integer, column as integer)
Brings a cell into the visible area in the control
Function SelCount() As integer
get the number of rows selected
Function Selected(row As Integer) As Boolean
Whether the row is selected
Sub Selected(row As Integer, assigns value as Boolean)
Sets whether the row is selected
Function Selected(row As Integer, column As integer) As Boolean
Whether the cell is selected
Sub Selected(row As Integer, column As integer, assigns value as boolean)
Sets whether the cell is selected
Function SelectedCells() As pair()
returns an Array of the Selected Cells as Pairs Row:Column
Function SelectedRows() As integer()
returns an Array of the Selected Rows
Sub Sort()
sort the list by the current SortColumn and SortDesending value
Function toXML(optional includedRows() as integer, includeColumnData as boolean=true, preserveParents as boolean=true, includeRowPictures as Boolean = false) As XmlDocument
Create an XmlDocument representing the list
Set includedRows to specify a set of rows to serialize
If includeColumnData=true, the column headers, widths etc will be included
preserveParents allows the XML to be reloaded preserving heirrarchical state
includeRowPictures will cause rowPictures to be embedded as Base64 encoded PNGs
Function ViewRectFromCell(row as integer, column as integer) As REALbasic.Rect
calculates the area of the view that the given cell will occupy.
 + 
Properties
AccessColumnsByInsertionOrder As Boolean
///When set to true, column access will be mapped to the original insertion order.
///eg. cell(0,2) will function the same after the user drags column 2 to a new location.
ActiveCell As TextEdit
AllowColumnReorder As Boolean
Whether the user should be allowed to reorder columns
AllowsOverflow As Boolean
If false, column widths are reduced proportionally beyond minimums to keep the list width within the view's width.
AllowsUnderflow As Boolean
If false, column widths are expanded proportionally when the view is larger than the total of column widths.
AnimationDuration As Double
Duration of animations for DragReorderRows
Bold As Boolean
Makes the text in the list Bold if available
CellBackGroundPaintEnabled As Boolean
set this value to true to enable custom background painting in CellBackgroundPaint events
CellPadding As Integer
Determines the amount of space to be inserted at cell edges
CellSelectionMode As Boolean
Set to true to allow individual cells to be selected
CellTextPaintEnabled As Boolean
Set to true to enable custom text drawing in cellTextPaint events
ColorIzedHeader As Boolean
Set to true to use system HighlightColor for selected Column when UsesSystemColors=true
ColumnCount As Integer
The number of columns in the control
ColumnResizingMode As Integer
Determines the mode for collapsing column widths to their minimumWidth when resizing the control.
Values are:
ColumnResizingModeNone
ColumnResizingModeDistributed
ColumnResizingModeLeftToRight
ColumnResizingModeRightToLeft
ColumnsResizable As Boolean
Set to true to alow the user to resize columns by dragging
ColumnUserResizingMode As Integer
Determines the mode for resizing column widths when the user drags a column divider
Values are:
ColumnUserResizingModeShare
ColumnUserResizingModePush (Only available when ColumnResizingMode=None)
ColumnWidths As String
A string to set the column sizing. Same format as Xojo Listbox ColumnWidths
DataSource As piDogDataView.Internal.DataSource
An optional DataSource subclass to be used as a DataSource for the list
DefaultRowHeight As Integer
The RowHeight to be used for rows without an explicit height
EnableDrag As Boolean
Set to true to alow the user to drag rows from the list
EnableDragReorder As Boolean
Set to true to allow users to reorder the list by dragging
FolderAnimationDuration As Double
Duration of animations for Folder open/close
FolderAnimationStyle As integer
Either standard or Drop-in style
Drop-in causes revealed rows to slide in from under the rows above.
GridlinePaintEnabled As Boolean
Set to false to disable GridlinePaint event and save some CPU
HasHeading As Boolean
The list has column headers
HeaderOffset As Integer
Moves the header down the specified number of pixels.
HeadingBGAlpha As Integer
The alpha value used in drawing header backgrounds.
0=fully opaque, 255=transparent
HeadingBGColor As Color
The base background color for the header.
HeadingFont As String
The font to use to draw text in the header
HeadingHeight As Integer
The height of the header
HeadingSelectedBGColor As Color
The base background color for drawing header sort column
HeadingSelectedTextColor As Color
the text color of the header sort column
HeadingTextColor As Color
The text color to draw header text
HeadingTextSize As Integer
the size to draw the header text
Hierarchical As Boolean
Setting this value to true will cause the list to perform as a iHierarchical list. This value is automatically set when a folder is added to the list.
InitialValue As String
A set of tab delimited values to be used to initialize the list
Italic As Boolean
Makes text in the list italic if available for selected Font
ListBackgroundColorA As Color
first alternating Background color
ListBackgroundColorB As Color
second alternating Background color
ListDisabledHighlightColor As Color
The color for selected cells when control is inactive
ListHighlightColor As Color
The background color to be used for selected rows/cells
ListHighlightedTextColor As Color
Text color of selected cells
ListIndex As Integer
The currently selected row, or the the first selected row if multiple rows are selected
PaintEmptyRows As Boolean
Set to false to prevent painting of rows beyond the list content
RequiresSelection As Boolean
Set to true to prevent the user from deselcting all rows by clicking an empty row
ScrollPosition As Integer
Get or set the first visible row
SelectionType As Integer
piDogDataView.selectionMultiple or piDogDataView.SelectionSingle
SortColumn As Integer
The Currently selected column for sorting the list
SortDesending As Boolean
Whether the list is sorted with lower value items toward the bottom
SortedColumn As Integer
StaticHeader As Boolean
Setting to true will prevent the header from bouncing with the list when the user scrolls past the beginning of the list.
TextColor As Color
The color to render text in the list
TextFont As String
The font to use to render text in the list
TextSize As Integer
The size to render text in the list
TextWrapMode As Integer
Either TextWrapModeTruncate or TextWrapModeWrap
UsesAlternatingBackgroundColors As Boolean
Whether the list will display rows with alternating background colors
UsesSystemColors As Boolean
Overrides the colors set through other properties
and uses system returned colors to render the control.
piDogDataView.ListColumn
 + 
Notes
Usage
A ListColumn object allows you to access and change formatting properties of columns.
Access is like :
myDataView.Column(x).HeadingBGColor=&cffffff
 + 
Properties
Alignment As Integer = 0
determines the default allignment for cells in this row
AlignmentOffset As Integer = 0
determines the default allignment offset for cells in this column
AutoResizable As Boolean = true
Whether the column participates in resizing during a resize of the DataView
BGColor As Color = &cffffffff
The background color used for cells in this column
CellContainer As CellContainer
The cellContainer to use for this column.
Usage is like:
myDataView.column(0).CellContainer=new myCellContainer
Be sure to handle populateValues and depopulateValues events in your CellContainer subclass
CheckAllCheckBoxChecked As Boolean
Whether the CheckAllCheckBox is checked if available
FormatString As String
The format string used to display the value of cells in this column
HasCheckAllCheckBox As Boolean
places a checkbox in the column header to allow check/uncheck all checkboxes in this column
Heading As String
the text to be displayed in this column's heading
HeadingAlignment As Integer = pidogDataView.DataView.AlignDefault
determines the default allignment for cells in this row
HeadingBGColor As Color = &cffffffff
The TextColor for this column
If Alpha=255 then default color is used
HeadingTextBold As Boolean = False
Whether the Heading text for this column should be Bold
HeadingTextColor As Color = &cffffffff
The TextColor for this column
If Alpha=255 then default color is used
HeadingTextFont As String
The font to use for this Heading. "" for default.
HeadingTextItalic As Boolean
Whether the Heading for this column should be Italic
HeadingTextSize As Integer = 0
The text size for this column.
0=default.
Hidden As Boolean = false
Setting to true will cause this column to be excluded from display and events
ID As UInt32
Index As Integer
LeftActual As Integer
the runtime value of the left edge of this column
Setting has no effect
LeftScaled As Integer
the runtime value of the left edge of this column accounting for zoom
Setting has no effect
MaxWidthActual As Integer = -1
The evaluated maximum width of this column
setting has no effect
MaxWidthExpression As String
the maximum width of this column
MinWidthActual As Integer = 50
the evaluated minimum width of this column
setting has no effect
MinWidthExpression As String = "50"
the expression used to determine the minimum width of this column
SortDirection As Integer = -1
The current sort direction of this column.
Values include:
SortDescending
SortNone
SortDescending
Tag As Variant
the tag for this column
TextColor As Color = &cffffffff
The textColor to use for cells in this column
Overrides view-wide setting, overridden by cell setting
TextWrapMode As Integer = -1
The TextWrapMode for this column
Either TextWrapModeDefault, TextWrapModeTruncate or TextWrapModeWrap
Type As Integer = 0
the default type for cells in this column
UserResizable As Boolean = true
whether the user is able to resize the column by dragging
VarType As Integer = -1
WidthActual As Integer
the evaluated width of this column
WidthExpression As String = "*"
the expression used to calculate the width of this column
WidthScaled As Integer
the evaluated width of this column accounting for zoom
piDogDataView.OptionList
 + 
Notes
About OptionLists
OptionList is a class representing options in a PopupMenu.
It can be either an array of values and optionally tags, or a boolean (True/False)
Usage in a cell is :
celltype(10,10)=typePopup
cell(10,10)=new OptionList(1,array("this","that","the other"))
result=cell(10,10) //returns the item at index 1, "that"
If a cell has no optionlist, but is a popup type, the columnTag
will be checked for an optionlist, and if found, the column's OptionList
will be cloned for cells in that column as needed.
 + 
Methods
Sub AppendOption(value as Variant, tag as Variant = Nil)
Adds an option to the end of the list with an optional tag
Function Clone() As piDogDataView.OptionList
creates a copy of this optionlist
Sub constructor(value As Boolean)
creates a yes/no OptionList
Sub constructor(index as integer, values() as String)
Creates a new optionlist with the given values and the default index passed
Sub constructor(index as integer, values() as variant)
Creates a new optionlist with the given values and the default index passed
Function operator_convert() As string
returns the currently selected item
 + 
Properties
Index As Integer
The currently selected index
Options() As Variant
The list of options
StringValue As string
returns the selected item as string
Tag As variant
the tag for this list
Tags() As Variant
the tags for the set options
Value As variant
the seleted item as variant