Listbox Replacement Discussion

This is a side thread from Tim’s most recent reply to the Omegabundle

So by my count there’s now at least 4+ cross-platform replacements for the ListBox:

  1. GraffitiSuite GraffitiListbox
  2. piDog DataView
  3. KAtkoSoft Mergeable Cell Listbox
  4. Simcar Software Magic Listbox

Any thoughts on pros/cons or which is the most up-to-date and capable? Any others I missed?

It’s listbox subclass. It’s not up to date. and it’s API1 or rather the listbox API 1 of long ago… BUT it still works… I just used it in a project recently where I needed to merge cells.

I intend to open source that when I get around to it…


1 Like

The OWListboxForAqua is not a replacement, it is a Listbox subclass specifically for the Mac that uses Wallpaper Tinted Row backgrounds, Overlay (style) scrollers and Big Sur style insets, making your Xojo Listboxes more modern on a Mac. This subclass requires Mac OS X 10.14 to work correctly, but will fall back to older functionality on 10.13 or below (there appear to be bugs in the macOS view management on 10.13 that I currently cannot work around).

There is a short video on this page OWListboxForAqua
A demo application can also be downloaded from that page.

Finally I have a newer version in production at the moment that offers more customization.

There’s also the OWSourceList, which is another listbox subclass but is designed to replicate the Mac’s source lists.

GraffitiListBox is a ContainerControl that has a ListBox and a custom-drawn header component inside. Everything’s been customized to look at home on the target OS including coloring (even in Windows Dark Mode). Headers have menus, nicer sort indicators, all kinds of niceties. It also uses the OS accessibility options for drawing (thanks to a request from @Tim_Parnell ).

I also have GraffitiGrid for Desktop, which supports things that GraffitiListBox doesn’t, such as embedding ContainerControls in cells, and is meant for complex data display. It also has events for data formatting and drawing.

From some recent posts in this thread “How do you deal with large lists?”, there are a couple more options not mentioned yet:

I hope that helps.

If you need to do cross-environments work (ie Desktop and Web) then I recommend GraffitiGrid as it is available for both environments, unlike GraffitiListBox (Desktop only).

GraffitiGrid is able to revise the number of columns in code, set the percentage widths to be larger than 100% and wrap text within a Cell, functions missing from the generic ListBox/WebListBox.


Many thanks to everyone! Not only was I curious about this topic myself, but I figured it might be a good stake in the ground for anyone seeking options for an enhanced listbox down the road.