Tip #36 | Using Mark and MarkedOnly in the Role Tailored Client

I always wanted to blog about myself, but humble as I am I never got around to do that. 😉

But now I have an excuse.

When the Role Tailored Client was introduced in 2009 one of the things that is missing from the UI was the ability to Mark some records and filter on Marked Only records. This is usefull when you want a subset of your data with records that have no common value to filter on.

In the Classic Client, now Development Environment, you can find the functions here:

Mark1 Mark2

However, this feature was discontinued from the IU, but not from C/AL.

In the C/AL Symbol Menu it is still possible to Mark records and filter them.

Mark3

So let’s see what happens if we use that in a Page step-by-step. We’ll use the Customer List (Page 22)

Step 1 – Add a new Action Category (Optional)

To make it easy for end users to find the options we’ll start by adding a category for the actions we are going to add later.

Mark4

Note that in order to add a new Category you need to also add the default ones. In this case we will work with Category4.

Step 2 – Add Actions with the correct properties

We add three actions in the ActionItems category

Mark5

And we assign a Name, Caption, Image and PromotedCategory. I also choose to make them big and promoted.

Mark6

Step 3 – Add C/AL Code

We add the C/AL commands to the actions

Mark7

Note that we use the reverse value to toggle the values on and off

Step 4 – Add a column indicator

To make is easy for users to see if a record is marked or not we add a new column to the page with Mark as the source expression

Mark8

The Result

When we run the page you see that we can Mark records which will be indicated in the new column, filter on them and easily clear the Marks.

Mark9

TIP: Copy/Paste

Since we did not use any variables or functions we can just copy/paste the actions around to any other page, as long as the ActionCategoryML does not conflict with existing values.

Enjoy

Advertisements

13 thoughts on “Tip #36 | Using Mark and MarkedOnly in the Role Tailored Client

  1. This is brilliant as I have users who use the old toggle to differentiate custom function actions on certain products, great replacement for the RTC.

    Would adding something like this to allow multi-line selecting / dragging and marking:

    Mark – OnAction()
    CurrPage.SETSELECTIONFILTER(Rec);
    MARKEDONLY(NOT MARKEDONLY);
    //MARK(NOT MARK);

    Like

  2. Great trick, but sad Microsoft removed this feature 😦
    Three things many developers do wrong, when working with MARK and SETSELECTIONFILTER.
    1) Never use SETSELECTIONFILTER on Rec. Always do it on a variable.
    2) Never use MARKEDONLY after calling SETSELECTIONFILTER.
    3) If your only “filter” is MARKs and MARKEDONLY, then always use the primary key if you need to loop the dataset.

    Like

    1. This is great. Our users are quite happy that we added this back in. They have asked for the multiline selection however. Is there a better option other than the one posted?

      Like

    2. And what about this code?

      CurrPage.SETSELECTIONFILTER(rcdCustomer);
      IF rcdCustomer.FINDSET THEN
      REPEAT
      GET(rcdCustomer.”No.”);
      MARK(NOT MARK);
      UNTIL rcdCustomer.NEXT = 0;

      Like

  3. Well, since no login required and I’m a Mark…
    I just tried to use a straight up F1 for marking records in 2009 to no avail. Perhaps some trickery in codeunit 1, or using sendkeys is in order. I implemented one in 2013 (where marks are visible in list form) using Ctrl-Shift-F1, but it was clunky to use. Like anyone uses F1 by itself for anything other than missing the esc key..

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s