# Creating multiple locators in Manipulator with constrained motion

I found a code to create multiple controls for a manipulate with a manipulate input and is working perfectly.

Manipulate[
With[{value = Table[c[i], {i, 1, n}],
controls = Sequence @@ Table[{c[i], 0, 1}, {i, 1, n}]},
Manipulate[value, controls]], {n, 1, 10, 1}]


But what I need is to do the same thing with locators instead of points and the motion of the locators should be constrained to vertical motion at their respective x points. The locator action can be viewed from the following code

Manipulate[
Show[Graphics[{Line[{{0, point[]}, {1, point[]}, {2,
point[]}, {3, point[]}, {4, point[]}}],
Locator[{0, point[]}], Locator[{1, point[]}],
Locator[{2, point[]}], Locator[{3, point[]}],
Locator[{4, point[]}]},
PlotRange -> {{0, 5}, {0, 2}}]], {{point, {0, 0}}, Locator,
Appearance -> None}, {{point, {1, 0}}, Locator,
Appearance -> None}, {{point, {2, 0}}, Locator,
Appearance -> None}, {{point, {3, 0}}, Locator,
Appearance -> None}, {{point, {4, 0}}, Locator,
Appearance -> None}]


Here, instead of the specified number of locator points, it should be updated on the go. The closest code I got is the following but it gives an error.

Manipulate[
With[{pointlist = Table[{i - 1, point[i][]}, {i, 1, n}],
Locatorlist = Table[Locator[{i - 1, point[i][]}], {i, 1, n}],
controls =
Sequence @@
Table[{{point[i], {i - 1, 0}}, Locator, Appearance -> None}, {i,
1, n}]},
Manipulate[{MatrixForm[pointlist],
Show[Graphics[{Line[pointlist], Locatorlist},
PlotRange -> {{0, n}, {0, 10}}]]}, controls]], {n, 2, 10, 1}]


The error message generated are 1. "Coordinate \$CellContextpoint should be a pair of numbers, or a Scaled or Offset form." 2. "Part 2 of point does not exist. >>" Eventhough the error is generated I am able to get the motion constraint and the graph is getting plotted. I cannot use vertical sliders as this has to be plotted on a graph with multiple set of the same. Can anyone help me, please???

After a few hit and trials, I found the answer to my own question. I had to call the variables in the second Manipulate section. The code is:

Manipulate[With[{pointarr = Table[point[i], {i, 1, n}],
controls =
Sequence @@
Table[{{point[i], {i - 1, 0}}, Locator, Appearance -> None}, {i,
1, n}]},
Manipulate[pointlist = Table[{i - 1, pointarr[[i, 2]]}, {i, 1, n}];
Locatorlist = Table[Locator[{i - 1, pointarr[[i, 2]]}], {i, 1, n}];
Show[Graphics[{Line[pointlist], Locatorlist},
PlotRange -> {{0, n}, {0, 10}}]], controls]], {n, 2, 10, 1}]
`

Its working perfect now. Hope the solution might be useful to someone. Thanks and Happy new year.