Skip to content

Динамические компоненты

AlexGyver edited this page Oct 2, 2022 · 4 revisions

Библиотека сделана так, что компоненты интерфейса "не существуют" в программе сами по себе, всё что у нас есть - это имена. В конструкторе мы указываем, как будет называться компонент и как он будет выглядеть, а в обработчике действия просто принимаем данные на указанное имя. Это позволяет очень легко генерировать и опрашивать компоненты целыми пачками, например в цикле.

Рассмотрим пример со слайдерами и кнопками, создадим и обработаем клики по ним:

void build() {
  GP.BUILD_BEGIN();
  GP.THEME(GP_DARK);

  // создём слайдеры с именами sld/0, sld/1 ...
  for (int i = 0; i < 5; i++) {
    GP.SLIDER(String("sld/") + i);
  }

  // создём кнопки с именами btn/0, btn/1 ...
  for (int i = 0; i < 5; i++) {
    GP.BUTTON(String("btn/") + i, String("Button ") + i);
  }

  GP.BUILD_END();
}

void action() {
  if (portal.click()) {
    if (portal.clickSub("sld")) {   // начинается с sld
      Serial.print("Slider ");
      Serial.print(portal.clickNameSub(1)); // получаем цифру
      Serial.print(": ");
      Serial.println(portal.getInt());

    }
    if (portal.clickSub("btn")) {   // начинается с btn
      Serial.print("Click: ");
      Serial.println(portal.clickNameSub(1)); // получаем цифру
    }
  }
}
Clone this wiki locally