здраствуйте. прошу помощи с логикой организации программы.
прошу не пинать сильно. Очень много букв.
вообщем, ситуация такая.
есть n-е количество записей например в базе, у всех записей примерно одинаковая структура полей,
и к ним применюятся одинаковые по смыслу действия.
но, в зависимости от типа записи, действия различаются по реализации.
также в зависимости от типа записи, некоторые действия требуют обязательного заполнения полей,
а некоторые поля отпускаются.
Поля имеют разный тип.
обьясню подробней на абстрактном примере:
имя:должность:возраст:телефон:город:зарплата:почта:знает ли Фотошоп
для всех имя, должность,город возраст — обязательны.
для инженера:
обязательны параметры зарплата, почта.
сайт, фотошоп — опционально.
для дизайнера:
почта, фотошоп обязательны, зарплата — опционально
для курьера
зарплата: опционально, почта обязательно,
фотошоп: параметр отсутствует.
коля:дизайнер:25:2135476:Москва:500:k@m.ru:да
вася:инженер:25:1234567:Москва:1000:v@m.ru:нет
дима:курьер:20:1234567:Москва:400:d@m.ru:
действие:написать письмо
перед этим нужно проверить, все ли поля заполнены, и вернуть незаполненные поля, причем, имена полей
и хотелось бы это делать автоматически, не делая обработчик для каждого свойства.
количество типов в дальненейшем будет увеличиваться, а количество полей будет больше 50.
скажу сразу, с классами я раньше не сталкивался, потому все то что ниже, может быть неверно...
я предположил, что лучше все вынести в класс.
шаблон класса профессий
TProf=class(TObject)
public
property name:string read GetName write SetName;
...
property photoshop:boolean read GetPS write SetPs;
...
function Send:Boolean;virtual;
каждая профессия наследует класс proff
TIng=class(TProf)
...
function Send:Boolean;override;
...
далее делается класс контроллер, как я его назвал
TContr=class(Tobject)
constuctor Create(typeProf:Byte);
data:TProf;
..
constructor TContr.Create(typeProf:Byte);
...
case typeProfof
1:
Data:=TIng.Create;
с этим более-не менее я разобрался, а как проверить заполнены ли нужные property, и узнать необходимые для каждого класса, чтобы, например сгенерить форму для заполнения,
вообщем, как организовать всю эту логику по правильному?
не заводить же
MyString=record;
enabled:Boolean;
sure:Boolean;
optional:Boolean;
Value:String;
к тому же поля могут быть разных типов....
Очень жду советов, еще раз прошу не пинайте сильно...