Как я позволяю/запрещаю меню Cut/Copy/Paste и объекты панели инструментов универсальным способом?

Лучшим соглашением является запись делегата, который отвечает за отслеживание количества прочитанных записей и прекращение после фиксированного счета; компоненты должны позаботиться о контексте выполнения, чтобы обеспечить перезапуск

class CountMaxReader<T> implements ItemReader<T>,ItemStream
{
  private int count = 0;
  private int max = 0;
  private ItemReader<T> delegate;

  T read() {
    T next = null;
    if(count < max) {
      next = delegate.read();
      ++count;
    }
    return next;
  }

  void open(ExecutionContext executionContext) {
    ((ItemStream)delegate).open(executionContext);
    count = executionContext.getInt('count', 0);
  }

  void close() {
    ((ItemStream)delegate).close(executionContext);
  }

  void update(ExecutionContext executionContext) {
    ((ItemStream)delegate).update(executionContext);
    executionContext.putInt('count', count);
  }
}

Это работает с любым читателем.

7
задан nruessmann 18 September 2008 в 12:55
поделиться

2 ответа

Создайте массив для каждого, позволяют/запрещают группу. Добавьте средства управления к массиву (конечно, он должен иметь корректный тип, такой как Объект или Любой, и т.д. зависит от языка программирования, который Вы используете). Затем для включения отключите просто цикл через массив и вызовите позволять/запрещать метод или функцию для каждого управления. Снова, в зависимости от языка Вы, возможно, должны вспомнить.

0
ответ дан 7 December 2019 в 16:47
поделиться

Нет никакого универсального интерфейса или набора методов для того, чтобы получить информацию сокращения/копии/вставки от элемента управления Windows Forms.

Я предлагаю, чтобы Ваш лучший подход должен был бы создать класс обертки для каждого типа управления. Затем, когда Вы хотите обновить меню, указывают, что Вы получаете текущий контроль с фокусом и создаете соответствующую обертку для него. Затем Вы просите, чтобы обертка для получения информации состояния Вам было нужно. Тем путем только необходимо создать реализацию обертки для каждого типа управления, которое Вы используете. Бит боли для запуска с, но другое время, только необходимо добавить новые средства управления, с которыми Вы сталкиваетесь.

Информация о буфере обмена намного легче, поскольку можно спросить одиночный элемент Буфера обмена, если это имеет данные внутри и что вводит его. С другой стороны все еще необходимо спросить целевое управление, если оно может признать, что типу информации, таким образом, существует все еще дополнительная работа, нужно выполнение.

3
ответ дан 7 December 2019 в 16:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: