Please note that this is very much a beta and only currently intended for seeing how it will work. It's definitely not finished and there are quite a few features and bugs to work out. However, before you roll your eyes and think, "Great, another project he won't finish" I'll remind you that this is a project for work. I *have* to finish it

Code will be released when it's cleaned up more. It's a promise. Currently releasing as a library until I'm more happy with it.

-------------------- Download From Here --------------------
NOTE: Please only use LONG, STRING, DOUBLE and BOOLEAN column types in this version. More will be added very, very soon (this weekend).
Features:
- *Fast. Or at least faster than a listicon in my experience. It's really well suited for database applications because of the main (and only, currently) data loading function.
*Multi-column sorting. Click a column to start and then hold down the control key to sort more columns. So you could sort by country and then province/state and then city, etc...
*Column filtering. Right-click a column to get a list of unique values for that column. Select the ones you want to view and the list is filtered.
*Footer! You can enable a footer for the list and pick different types of functions. If you look in my screenshot you'll see the footer row at the very bottom. I've told it to give me a maximum for column 6 and a non-empty string count for column 2. Footer functions can be changed simply by clicking in the column footer and choosing which function to use. They are dependent on the column type so if you click in a LONG column type you'll see functions like sum, max, min, avg and a STRING column type will (currently) let you see empty and non-empty string counts.
*Movable columns. Right-click on a column and select the 'Move columns' option and choose where to move it. I could've done the same thing that normal listicons do but I think mine is easier.
*The ability to hide columns. You can display only the columns you want and hide the others. There is a list control box button (the gray button in the very top-left of the list) that allows you to pick which columns to hide/show.
*Columns are referenced by numerical ID values and are not tied to any specific order.
*Columns are defined as specific types (long, string, boolean, double, date, etc...) and column functions are handled based on those types.
*Extremely configurable. Currently I've only set it up for allowing you to change the grid line colors and default cell background/foreground colors but that list will grow soon. You can also change the font and colors for columns as you add them.
*Column formats. Each different column type (long, boolean, string, date, etc...) will have it's own format type. Only one is configured currently and that's for the boolean type. You can choose to show an X or a check mark or an X without the box.
- *Stronger configuration like setting individual cell colors and fonts and whole column colors/fonts that affect the cells within that column.
*Cell editing so that you can make changes to the values. Click on a boolean field and it will check or uncheck.
*The ability to save changes made from the above item. The program will call a user passed procedure to write out the information.
*Color-If ability. So you can write simple statements for a column. Like for a LONG value column, color the cell XXXX color if the value is less than 10.
*More types of columns - an example would be a progress bar type to display a progress bar within the column.
*More format types. For example, currency for double values and different date formats. These only affect how the data is displayed and not the underlying data.
*Ummm... too tired to remember what else is on my list.
Code: Select all
HoldSettings.s_xList_Settings
xListSetStandardSettings(@HoldSettings)
HoldSettings\ColorGrid = #Red
xListGadget(#ListMain, 0, 0, WindowWidth(#WindowMain), WindowHeight(#WindowMain) - 20 - 5, @HoldSettings)
The following are the current user functions...
- ProcedureDLL xListSetStandardSettings(*Settings.s_xList_Settings)
ProcedureDLL.l xListGetCellValue(Gadget.l, Row.l, ColumnID.l, *Memory.l)
ProcedureDLL xListRenameColumn(Gadget.l, ColumnID.l, Named.s)
ProcedureDLL.l xListGadgetWidth(Gadget.l)
ProcedureDLL.l xListGadgetHeight(Gadget.l)
ProcedureDLL.l xListGetColumnCount(Gadget.l, OnlyVisible.l)
ProcedureDLL.l xListGetRowCount(Gadget.l)
ProcedureDLL xListClearRows(Gadget.l)
ProcedureDLL xListHideColumn(Gadget.l, ColumnID.l, Hide.l)
ProcedureDLL xListSetDoNotDraw(Gadget.l, DoNotDraw.l)
ProcedureDLL xListSetHideHeader(Gadget.l, Hide.l)
ProcedureDLL xListSetHideGrid(Gadget.l, Hide.l)
ProcedureDLL xListAddColumn(Gadget.l, *Column.s_xList_Add_Column, *Font.s_xList_Font, *Colors.s_xList_Columns_Colors)
ProcedureDLL xListEnableFooter(Gadget.l, ColumnID.l, Function.l)
ProcedureDLL xListDisableFooter(Gadget.l, ColumnID.l)
ProcedureDLL xListPrepareRows(Gadget.l, CountRows.l, CallbackDataRequester.l)
Give it a spin and see what you think.