Показать сообщение отдельно
  #13  
Старый 10.02.2011, 10:28
vikk vikk вне форума
Начинающий
 
Регистрация: 01.10.2010
Сообщения: 132
Репутация: 10
По умолчанию

Спасибо за разбор моих каракулей. С 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 
   ...

Или это тоже нехорошо?

Буду оооочень благодарна за любые наставления, указания, советы и пр.
Ответить с цитированием