Цитата:
Сообщение от
RomanK
можно было один раз написать это дело в классе и потом вызывать для всех форм группы ledgerJournalTrans*

а так придется каждую из форм править

Ни в коем случае не надо править все формы подряд! Напишите (или допишите) движок управления формами (иерархию классов, если у вас несколько схожих "разновидностей" журналов) и движок с бизнес-логикой (тоже иерархию классов), который будет решать, когда поле обязательно к заполнению, а когда нет; в качестве основы можно взять LedgerJournalEngine, хотя в ряде случаев проще написать с нуля свое, чем вырезать из него "лишнее". Тогда движок управления формами будет получать от движка с бизнес-логикой данные о том, какие поля являются обязательными, и подсвечивать их для пользователя красной волнистой линией за счет изменения свойств полей DataSource'а, а движок с бизнес-логикой на validateWrite будет проверять, на самом ли деле обязательные поля заполнены. Причем заметьте: проверять заполненность полей только на записи строк журнала на форме недостаточно, потому что сегодня журнал создает пользователь, а завтра он будет создаваться из кода, так что как минимум все те же самые проверки нужно выполнять в классе разноски ваших журналов - тут вам опять пригодится движок, содержащий бизнес-логику.
Цитата:
Сообщение от
AlGol
Допиши проверку на заполненность в тот же класс и вызывай для validateWrite всех форм той же группы.
Однозначно - и не только на формах.
Цитата:
Сообщение от
oip
Ставить Автодекларейшн в Yes - нормально во многих ситуациях.
Разве что для unbound-контролов

А для bound-контролов, по-моему, лучше всегда и везде использовать группы полей с AutoDataGroup = Yes. На счет AutoDeclaration хочется (скромно так) еще раз пропиарить
Итератор с поддержкой методов обратного вызова для обработки контролов на форме, который как минимум для тех контролов, которые могут располагаться в Grid'е, практически избавляет от необходимости обращения к ним "по имени"