Спасибо за разбор моих каракулей. С MDI-формами не работаю - не могу найти достаточное количество информации, чтоб хоть попробовать, как оно это делается. Скажем, можно ли только ЧАСТЬ форм проекта сделать дочерними к какой-то ещё форме проекта или уж если такая организация, то всего проекта в целом? И особенности организации, кроме как установка FormStyle главной - в MDIForm, а других - в MDIChild что-то не встретила.
Про то, что форму не создавать всякий раз новую, а использовать одну и ту же - это я подумаю, может быть перестрою мышление

. До сих пор я всегда освобождла форму в её FormClose через Action := caFree, а обнуляла - в вызывающей, по свойству типа OnClose:TNotifyEvent, т.е. общая схема действий была такая:
Unit1:
Код:
type TForm1 = class(TForm)
...
private
Form2: TForm2;
...
end;
procedure TForm1.BtnCreateForm2Click(SEnder: TObject);
begin
...
Form2 := TForm2.Create(self);
Form2.OnClose := OnCloseForm2;
...
end;
procedure TForm1.OnCloseForm2(SEnder: TObject);
begin
Form2 := nil;
end;
Unit2:
Код:
type
TForm2 = class(TForm)
...
private
fonClose:TNotifyEvent: TNotifyEvent read fonClose write fonClose;
public
property onClose:
...
end;
TForm2.FormClose(SEnder: TObject; Action: TCloseAction);
begin
...
if assigned (fonClose) then
fonClose(self);
Action := caFree;
end;
А каким образом можно не выносить обработчик события с вызываемой формы, если в теле этого обработчика производятся манипуляции над ВЫЗЫВАЮЩЕЙ формой(в данном, например, случае надо в меню вызывающей формы создать новую кнопку с именем процесса, введенным пользователем в поле вызываемой формы) ? Другими словами, каковы должны быть действия в случае необходимости передать параметры из вызываемой формы - в вызывающую (гм, я здесь уже такую темку открывала). Можно попросить у Вас общую схему - как действовать в таких случаях?
Про признак я не очень поняла. Плохость такого стиля в чём заключается - в том, что в качестве условия используется Caption или в том, что напрямую в коде прописывается кирилловая строка, которая может не совпасть по кодировке на каком-то другом компе ? Ведь если у я введу булевский признак IsNew, то ему же всё равно надо будет присваивать значение в соответствии с тем, нажата ли кнопка с названием 'Новый' или другая. А можно тогда через тэг кнопки эту проблему решить(чтоб не кирильничать в коде?) :
Код:
if TdxBarButton(Sender).Tag = <значение тэга кнопки "Новый"> then
...
Или это тоже нехорошо?
Буду оооочень благодарна за любые наставления, указания, советы и пр.