Я вижу два пути, чтобы сделать это, но они не так легко, как кажется, что вы надеялись:
1. Массив управления
Первый метод должен был бы пройти через (на окнах, вкладках и пользовательских объектах). Я бы создал функцию, которая взяла имя элемента управления в виде строки, а затем другую, которая перегрузила ту же функцию и взяла имя управления и массив windowobject. Метод, основанный только на строках, просто вызовет метод string/array, передав строку и добавив window.Control как второй параметр. Метод string/array будет проходить через массив, а для каждого элемента - ClassDefinition. Вытяните имя и отделите его так, как вы хотите, чтобы он соответствовал параметру строки (например, для w_test`tab_first`tabpage_first`cb_here, вы хотите, чтобы cb_here соответствовала, или tab_first`tabpage_first`cb_here?). Поступайте с совпадениями по мере необходимости. Когда вы найдете элемент управления вкладкой типа или пользовательского объекта, вызовите функцию string/array снова с помощью массива Control из этого объекта; справиться с успехами/неудачами при необходимости.
2. DataWindow
Что вы описываете очень хорошо работает с DataWindows, и их описать() и Modify() функции. Поскольку вы передаете эти функции только строкой, вы можете создавать не только имена элементов управления, но и значения, которые они заданы, так как вы создадите любую строку. Фактически, вы можете создавать несколько строк Modify() вместе (разделенные пробелом) и делать один вызов Modify(); это не только быстрее, но и уменьшает мерцание окна и видимую активность.
Не попадайте в ловушку, думая, что, поскольку ваши данные не из базы данных, вы не можете использовать DataWindow. Создайте внешний DataWindow и просто используйте его с одной строкой, вставленной во время события Constructor.
Как вы могли догадаться, я бы сильно поддержал подход DataWindow. Мало того, что он будет работать лучше, но он будет обеспечивать гораздо большую гибкость, если вы захотите переместиться и пометить больше типов управления, чем просто статический текст. (Вы должны будете сделать некоторый тип отливку даже с одним типом управления, но если вы хотите получить в упаковке, вам нужно начать ВЫБРАТЬ СЛУЧАЙ обрабатывать все типы.)
Успехов,
Terry
Это было бы довольно сложно. Потому что это может быть text1.tag, text1.visible, text1.enabled, хотя я мог бы определить массив двух измерений, но это сделало бы код еще более сложным. – user
Я не понимаю, почему это сложнее. вы можете определить невизуальный пользовательский объект с необходимыми свойствами и массив из этого uo. – DARKinVADER
Согласитесь, это было бы простым решением. Если вам нужно много свойств, тогда просто создайте NVO OR Structure, ant и настройте его как: я приведу пример в ответ ниже. –