Выкладываю (и нервно курю в сторонке) :
Код:
{На главной форме есть бар с меню, состоящем из кнопок с названиями директорий, содержащих данные для конкретного процесса. Данные будут загружаться в зависимости от выбранной директории :}
procedure TMainForm.BtnExClick(Sender: TObject);
begin
with Sender as TdxBarButton do
FocusedDir := Caption;
{если пользователь хочет создать новый процесс, то загружается спецформочка, в которой задаётся название нового процесса и пр. инфа для создания директории нового процесса :}
if FocusedDir = 'Новый' then
begin
if FormAddExam = nil then
FormAddExam := TFormAddExam.Create(nil);
try
FormAddExam.onAddNewExam := OnAddNewExam; {Это свойство типа TNotifyEvent, сообщающее вызывающей форме введённое в спецформочке имя новой директории(чтоб создать новую кнопку меню на баре) }
if FormAddExam.WindowState = wsMinimized then
FormAddExam.WindowState := wsNormal;
if FormAddExam.ShowModal = mrCancel then
exit;
finally
FormAddExam.Free;
FormAddExam := nil;
end;
end;
{если пользователь подтвердил создание нового процесса (форма закрылась с ModalResult = mrOK - там внутри возможны только 2 варианта ModalResult), то создаётся новая форма для осуществления толькочтосозданного процесса: }
if FormExam <> nil then
FormExam := nil;
FormExam := TFormExam.Create(nil);
FormExam.Top := Top + Height;
FormExam.onCloseExam := OnCloseExam; {свойство типа TNotifyEvent, вызывающееся в FormExam.CloseForm(и там же после этого вызова Action := caFree) и сообщающее вызывающей форме, что эту форму можно разрушать (в теле процедуры OnCloseExam только один оператор: FormExam := nil ) : }
FormExam.DefineFilesListForExam(FocusedDir);{инициация некоторых полей формы }
if FormExam <> nil then
begin
if FormExam.WindowState = wsMinimized then
FormExam.WindowState := wsNormal;
FormExam.Show;
end;
end;
//================
Ну вот, как-то так примерно

Жду строгого разбора полётов.