Desktop: Scrolling container controls

Some years back I did a small proof of concept app where I tried to make a listbox with controls by scrolling container controls… unfortunately i can’t find that project now…

Initially it looked promising … on my Mac that is…

But when I tried it on Windows the flicker was too bad during scrolling even after trying all the tricks I know to reduce it. Even started to try use DrawInTo and hiding the containers themselves while scrolling, but DrawInto was not working quite right for all controls (at last back then) so I abandoned that project

Unfortunately as I can’t find that project anymore to see if the situation has improved, as I could use that type UI for what i am working on…

Has anybody tried doing that recently? If so did it work/look OK X-platfrom (Mac/Win)?

Thanks
-karen

I presume you tried Martin’s StackView?

https://xojo.gitbook.io/add-ons/stackview

Depending on what you do on Windows it might be good enough.

1 Like

Hi Markus,
I just downloaded it… But the classes are encrypted which makes me worry about what to do if an an issue comes up in my specific use case and I don’t have much time.

BTW if you remember, you saw a video of that proof of concept of mine on a Mac that I posted… It had the Agents of Shield logo in the background

At this point since I only have a day or 2 to work on it, I’m going to use a different UI than I originally wanted to, using a listbox

in fact my MergableCell listbox subclass… it still works- at least in 2019r1.1 that I’m using for this project.

It won’t be as nice as scrolling containers with real controls, but I think it will be good enough and I think I can do it quickly that way.

-karen

You can try the demo on Windows to see how it performs (Julien helped Martin at some point to reduce flicker as much as possible). However I think some problems on Windows are simply down to Xojo using the old Windows framework.

The unencrypted source code is €15 (at that price I bought it just to support Martin).

1 Like

I remember that drawinto only works
If one of the cc is outside of the window in the design view else this event not run.

Or if you create this cc at runtime
You need to embed it into window.

I’ve done it recently for the Mac. I wrote it for App Wrapper 4 (https://ohanaware.com/appwrapper/) and have included it in the Ohanaware App Kit (https://ohanaware.com/appkit/). Both of these offer compiled trial versions.

It supports elastic scrolling, overlay scrollbars and that desktop tinting thing in dark mode. If you purchase the Ohanaware App Kit, you get the full source code.

Hi @KarenA,

sounds like StackView could help you in this case. Yeah, the demo project is encrypted, but if you purchase (15€), you’ll get the full unencrypted source with optional NSScrollView and a control which is tested and working fine an macOS, Windows and Linux.

Greetings.

I downloaded the App Kit demo app, but don’t see this in it. What should I be looking for? Or am I looking in the wrong place?..

My bad… The demo of the Stack View isn’t in the main project! I’ll get on to that soon. I am sorry for this mistake of mine.

In the meantime, if you have App Wrapper 4, the right hand panel is a stack view for most of the pages, on the contents page, the icons sub page is a grid view, the add & modify sub pages are stack views.

If willing to look at third party solutions, also consider piDog’s Scrolling Canvas ( here ) which is included as part of piDog’s DataView ( here ) but also available separately.

I have never had the need to use independently from DataView, but can attest to DataView working well for me on macOS and Windows with smooth scrolling and zooming. It also supports Linux but I have no experience there.

They do have a trials available (including demo projects) and you can license with or without source.

Yes, the scrolling controls in AppWrapper look great! I’m sorry I didn’t make the connection. I’ll be getting App Kit as soon as I start work on my next major upgrade :grinning:

1 Like

@John_McKernon Please do not apologize, the mistake is mine and mine alone. I will update the sample project/application shortly.