Dockers.

Dockers are an important part of the CorelDRAW user interface. Although there are a number of ways of arranging them, many users find it useful to have multiple dockers in the same area. At any given time, one docker is visible, and the other open dockers in that area are behind it. Clicking on the tab for one of the other open dockers brings it to the front of that area. In this screenshot, for example, these dockers are all open in the same docker area:

  • Object Properties
  • Object Styles
  • Transformations
  • Align and Distribute

with Transformations "at the front".



In that screenshot, there is room for both icons and text for all of those dockers, but the text for Align and Distribute has been clipped off. If we were to add more dockers to that area, or were to make that area smaller vertically, then more text descriptions would be clipped down to make things fit. As space becomes tighter, text descriptions become shorter, and eventually disappear completely, leaving only icons.

With a vertically-oriented docker, we at best have text that is rotated 90 degrees, as well as icons. We might have incomplete text that is rotated 90 degrees, or in some cases, only icons. Depending on how good one is at reading rotated text, or at memorizing what the different icons mean, this can present some challenges when trying to navigate to a docker that is already open, but is behind another docker in the same area.

Accessing dockers using regular Commands.

The commands for the dockers - found in the menu bar under Windows>Dockers - all function as toggles. If a docker is not open, then the command opens it. If a docker is already open, then the command closes it.

What you will not find is a command to take you to a docker, even if that docker is already open.

Using a macro for this.

Something not exactly like, but close to the "take me to the docker, even if it's already open" functionality can be achieved using a VBA macro, if one knows the GUID used to identify the docker. The general logic here is:

  • Check to see if the docker is visible.
  • If the docker is not visible, then show it.
  • If the docker is visible, first hide it, and then show it.

Showing the docker brings it "to the front". The potential downside to this approach is that, if a docker has information in it that is not stored when it hidden, that information will be lost in the hide/show process.

A macro to do this with the Object Properties docker might look like this:

Sub show_object_properties_docker()
Const strDockerGUID As String = "102052d9-0a87-481a-af3b-00f1bce81f9f"

If Application.FrameWork.IsDockerVisible(strDockerGUID) = False Then
        Application.FrameWork.ShowDocker strDockerGUID
    Else
        Application.FrameWork.HideDocker strDockerGUID
        Application.FrameWork.ShowDocker strDockerGUID
    End If
End Sub

One could simply copy and paste that many times, and then change the sub name and GUID, but it's a bit neater to make a more general sub:

Sub ShowOrHideShowDocker(DockerGUID As String)

If Application.FrameWork.IsDockerVisible(DockerGUID) = False Then
        Application.FrameWork.ShowDocker DockerGUID
    Else
        Application.FrameWork.HideDocker DockerGUID
        Application.FrameWork.ShowDocker DockerGUID
    End If
End Sub

Then, for each docker of interest, we can have a smaller sub that calls it:

Sub ShowObjectProperties()

    ShowOrHideShowDocker "102052d9-0a87-481a-af3b-00f1bce81f9f"
End Sub

It is straightforward, in this way, to create a collection of macro subs for quickly accessing dockers.

Putting this to work with a User Menu.

One may assign a shortcut key to any of these macro subs. An alternative to doing that for all of these - and then having to memorize all of the shortcuts - is to put them on a user menu. This is what I have done, with "D" assigned as the shortcut key for the user menu.

This is a video showing that user menu - and the macro subs on it - used to access dockers: