I'm not sure that I have exactly what you are asking for, but I thought you want something like the following:
Given a user interface with one variable, let's say an array, which can vary in size, and another (dependent) variable, which is an index into the current array that you want to use from the user interface, for indexing into an array.
But you do not want to fix the layout of the index variable in the user interface, because at runtime it depends on the size of the array, which can be changed using the second variable.
Here is one manipulator that has a user interface that has an index control variable that is dynamically updated in the user interface as the size of the array changes.
I used SetterBar for the index (dependent variable), but you can also use the slider. SetterBar has made the user interface that is changing more understandable.
When you change the length of the array, the index control variable automatically updates its maximum allowed index, which will be used to match the current length of the array.
When the array is compressed, the index will also decrease.
I'm not sure if this is what you want, but if it is, you can customize this approach to fit into your problem.
Manipulate[ Grid[{ {Style[Row[{"data[[", i, "]]=", data[[i]]}], 12]}, {MatrixForm[data], SpanFromLeft} }, Alignment -> Left, Spacings -> {0, 1} ], Dynamic@Grid [{ {Text["select index into the array = "], SetterBar[Dynamic[i, {i =


update 8:30 pm fyi, just fixed the code above to add the necessary additional logic.