Цитата:
Сообщение от
petr
Для того, чтобы обатиться к контролу, у которого св-во AutoDeclaration установлено в No (например он входит в группу, и его св-ва недоступны) есть 2 способа.
1-ый. Работатет не для всех св-в, но не может породить run-time ошибки
FormDataSource.object(fieldId).visible(), enabled(), и некоторые другие.
Не, тут на выходе получается не FormControl, а FormDataObject, что не одно и то же. Для того, что может FormDataObject, разумеется, никакие ковыряния в контролах не нужны и, более того, вредны с идеологической точки зрения. Если нужно управлять поведением поля datasource'а на форме, это и надо делать через datasource - тут кто бы спорил.
Цитата:
Сообщение от
petr
2-ый. Предоставляет доступ ко всем св-вам, но может породить ошибку run-time
formStringControl = element.control(control::"имя контрола на форме");
Именно этот способ я имел в виду, говоря «
обычно должны иметь свойство AutoDeclaration == Yes». Но мне лично не нравится идея зашивать в код то, что нельзя проверить на этапе компиляции; на мой взгляд, использование enum'а Control на формах оправдано разве что в случае необходимости подправить дизайн формы через FormBuild-классы, т.е. до вызова super() в init() формы. Опять же, последний способ вынуждает обрабатывать контролы по одному, что мне лично не очень нравится.