Smart way for displaying and selecting values

Hi,
I'm trying to display some ids and would like to use a white rectangle to highlight/ select one.
I got it almost working but my code and approach is a mess and therefore I'm looking for a good solution and start over.
I filmed my display to illustrate it with bugs. When pressing the "increase"-button two times the highlighted box should move to the center postition. Numbers should stay in place. When pressing the incr-button again I'd like to shift the numbers to the left and still highlight the center rectangle. This should work like that till the last two numbers are shown where the white rectangle is allowed to move to the 4th and 5th position.
(Hope it's somehow clear what I mean)

How would you solve this?

So far I have a struct array where I can mark the available ID with state=1.
I then used a second array which I filled with where state==1
As a result I got an ordered array with all the IDs that should be displayed.

The IDs are currently stored in a struct


struct sensor box[64] = {
{ 0, 0, 1}, /*byte index, state, id;*/
{ 0, 0, 2},
{ 0, 0, 3},
{ 0, 0, 4},
{ 0, 0, 5},
{ 0, 0, 6},
{ 0, 0, 7},
{ 0, 0, 8},
{ 0, 0, 9},
{ 0, 0, 10},
{ 0, 0, 11},
{ 0, 0, 12},
{ 0, 0, 13},
{ 0, 0, 14},
{ 0, 0, 15},
{ 0, 0, 16},
{ 0, 0, 17},
{ 0, 0, 18},
{ 0, 0, 19},
{ 0, 0, 20},
{ 0, 0, 21},
{ 0, 0, 22},
{ 0, 0, 23},
{ 0, 1, 24},
{ 0, 1, 25},
{ 0, 0, 26},
{ 0, 0, 27},
{ 0, 0, 28},
{ 0, 0, 29},
{ 0, 0, 30},
{ 0, 0, 31},
{ 0, 0, 32},
{ 0, 0, 33},
{ 0, 1, 34},
{ 0, 0, 35},
{ 0, 1, 36},
{ 0, 0, 37},
{ 0, 0, 38},
{ 0, 0, 39},
{ 0, 1, 40},
{ 0, 0, 41},
{ 0, 0, 42},
{ 0, 0, 43},
{ 0, 0, 44},
{ 0, 1, 45},
{ 0, 1, 46},
{ 0, 0, 47},
{ 0, 0, 48},
{ 0, 0, 49},
{ 0, 0, 50},
{ 0, 0, 51},
{ 0, 0, 52},
{ 0, 0, 53},
{ 0, 0, 54},
{ 0, 0, 55},
{ 0, 0, 56},
{ 0, 0, 57},
{ 0, 0, 58},
{ 0, 0, 59},
{ 0, 0, 60},
{ 0, 0, 61},
{ 0, 0, 62},
{ 0, 0, 63}
};
  int leftIndex = index - 2;
  if (index < 2)
    leftIndex = 0;
  if (index > MAX_INDEX - 3)
    leftIndex = MAX_INDEX - 5;
  for (int i= leftIndex; i < leftIndex +5; i++)
  {
      if (i == index)
         DrawHighlighted(i);
     else
        DrawNotHighlighted(i);
  }