This component is NOT a subclass of ListBox, but has been completely rewritten to have fast and stable data loading.
This component is NOT a ContainerControl that contains other components for simulate the grid, but is a SINGLE component that rewrites the entire grid editable.
You will have ONLY ONE component to drag into your project.
The DataSource is type Database, therefore compatible with: SQLite, MySQL, PostgreSQL, MS SQL, ODBC, and all Xojo Database subclasses.
You can query the database and the component will display the data in a few cents of a second. If the database is not local but remote, the speed will also depend on the connection.
You can set the data types for each column, such as: Text, Number, Currency, CheckBox, List, Date, Link, ProgressBar, Color, etc
You can change the width and alignment of the columns.
You can sort the data by clicking on a column (ASC/DESC). By holding down the CTRL key (or COMMAND for macOS) you can add columns to the sort as first, second, third column, etc.
You can edit the content of the cells with a double click and the data will be updated directly on the database.
You can delete rows in the database, or just in grid view (leaving the data intact in the database).
You can add rows by key value or by Json string.
You can choose which columns are editable and which are not.
You can move columns or hide them.
You have a settings screen to manage the grid after startup.
You can save the settings of the columns and the grid, and restore them.
There is an event that allows you to decide if the modified cell value is valid or not.
There is an event that allows you to redesign the cell to your liking. This allows you to customize it as you wish, without limits.
You can select rows, multiple rows at the same time.
You can drag row (or rows) to another control with Drag and Drop.
You can choose all the colors of the grid, from the background to the borders, from the header to the cells, from the selection to the cell focus.
You can change the font of the cells, font name, size, bold, underline, etc.
the Single License can be used by 1 developer only, and has 1 year of free updates.
the Multi License can be used by 10 developers, and has 3 years of free updates.
the Enterprise License can be used by unlimited developers, and has 5 years of free updates.
Once the free updates period has expired, you can decide whether to continue using the component in that version, or whether to purchase update packages.
Prices for updates are typically one-third of the price of new licenses.
I’m an enthusiastic supporter of using the code of others so that I can develop faster. TVListbox from the MBS plugin, pidog Datagrid or Sam’s listbox subclass all have problems and limitations. Therefore, I’m still looking for an alternative.
Thank you @Gabriele_Marchionni, you have obviously put a lot of work into this, we appreciate the effort.
At least one important feature appears to be missing, is horizontal scrolling via a Trackpad or Shift+Scrollwheel.
Maybe I missed a setting or something. But when I tried swiping left or right with two fingers on a Trackpad, or hold down the Shift key while using a mouse scrollwheel - the grid did not move side-to-side. Using a mouse on the scrollbar works, but not other gestures.
For now it works with dataset (it’s a DataGrid). We are designing a component with the same functionality but free from dataset where rows and columns are inserted manually.
It works with a query.
You can use a query with multiple tables in join. However, in edit the program can only use one table. So it is important to set the DbTableName and DbKeyFieldName properties so that the component knows which table to edit.
I expect a modern scrollbar which hides automatically and has that odd springy thing. I want the selection color to be used for selecting rows. And lastly I want the selection to be an inset one.
Neither the Graffiti listbox nor the grid have a single one of these modern listbox features.