"There is no problem that cannot be solved in software with another layer of indirection."
Maybe the OP has it figured out now, but I like understanding things by analogy; this is a long post but feel free to ignore it.
Think of the Levittown houses of post-WWII America. All of the houses are essentially the same house: you come in the front door, and the door opens to the right; in front of you is the coat closet; take a left and you are in the living room. On the other side of the living room is a hallway; the hallway has a bedroom on the right and past that another bedroom at the end of the hall on the right; the first door on the left is a bathroom,; the second door on the left is the master bedroom with a en suite bathroom; etc.
The relevance here is that you go into each house and the color schemes may change, the appliances may be Maytag or Whirlpool or GE, but the layout is the same, and all of the basic functionality (living room, bedrooms, bathrooms, kitchen, etc.) is in the same place in each house. The only thing that changes is the starting address.
The same thing with this addressing scheme: a different address - location, front door - of a global object is passed to the code that implements the buttons and other controls of a single screen, and at every address passed there is a global object that is laid out in the same way as every other global object at an address passed to that screen. So the first # refers to the street address, and the second # refers to a different room or object in a room; e.g. so when you push a button that is tied to e.g. [#1]#4, the light goes on in the kitchen (#4) of the global object in the house address 1 Levittown Rd. (#1). If you have another instance of that screen that passed [#2], 2 Levittown Rd, then [#2]#4 controls on the light in that kitchen.
80% of programming is bookkeeping.