How to make scrolling LCD Display (marquee)

Ask and ye shall receive…

Uses two timers. One indexes through the display itself, the other indexes through the active messages. There’s a property change script that starts the opposite timer when it is not running. So the net effect is like this:

[ul][li]Index the first timer until it finds an active message.[/li]
[li]Load message into the buffer with spaces padding before and after.[/li]
[li]Index through the buffer as a substring. Each increment of the index moves the diplayed text one character to the left.[/li]
[li]After the buffer has been indexed, restart the message indexer to find the next one.[/li][/ul]

Something of a work of art, if I do say so myself-- which, of course, I do. :mrgreen:

EDIT All three versions are now in one download at this post.

Although keep it as a feature request. That’d be awesome!

Once again Jordan, great imagination at work.

Very clever - nice work!


Thanks for posting this…

I’m making some signage and need this functionality… The only problem is that it jumps a bit too much to make the text easily readable as it scrolls…

Can I reiterate the request to make this an object built into the system?

You can adjust the speed of the scroll using the marquee indexer timer. Remember that this a character scroll and not by pixel.

This version changes the location of a label to provide a smooth scrolling effect.

EDIT All three versions are now in one download at this post.

Save as Version 2, but vertical scroll. Also added a pause at the center for easy reading. :slight_smile:

EDIT All three versions are now in one download at this post.


That’s awesome and exactly what I need… Thank you!


Anything new on this subject?

How does the .vwin file above work, and how do I import it and use it?

You can import a .vwin by right clicking the Windows folder in the project browser and selecting import.

Nicely done, thanks.

Sorry to dig up an old thread here, but I was looking for examples of a scrolling marquee. This one would display active alarms of a certain severity in our maintenance area(s).

JordanCClark had attached some examples but unfortunately they don’t appear to be on the server anymore.

Can anyone suggest good ways to accomplish this?



Things have changed a bit meanwhile. The template repeater now has a build-in marquee mode. This even works when you only add one template to the repeater.

All three versions in one download. Being a code pack rat has its advantages… :grin:

Marquee_v1-v3_2017-09-07_0718_partial.proj (34.9 KB)

1 Like

Here’s an update on Jordan’s marquee using system.gui.transform. It’s simpler and doesn’t need as many objects or bindings. Just set the root container’s time property to the length of time in milliseconds for the message to cross the container. It should cope with different length of container or message.

Multiple messages is left as an exercise for the reader.

Marquee updated_2017-09-07.proj (6.6 KB)


@JordanCClark @AlThePal

I have tired for multiple messages… i getting message from database to text field…
i am passing in to text field as string hello, welcome, testing (like this )
Is there any better way to do it for multiple message… because i am getting the text message from database

my database look like this

based on the plant id i am filtering the message to plant and i have message enable option… so when i disable i am not showing that text

can help me to do this in effective manner

Is it possible to pass dataset column to the text box and show message on the screen?

Version that one-shots a message. (6.6 KB)


Thanks i will Check it out

This scrolling shows jerky movements if we swap this window with any other window and then swap back to original window. Any suggestion to overcome this issue with system.gui.transform.?