| 
| 
 | Вопрос # 1 180/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!Помогите пожалуйста обойти ошибку  "Cannot creat form. No MDI forms are currently active". Я создаю приложение, в котором из главной формы1 (fsNormal) при нажатии на кнопку создается форма2 (fsMDIForm). Далее при нажатии кнопки на форме2 должна создаваться форма3 (fsMDIChild), однако выскакивает эта пресловутая ошибка. Получается, что MDI-форма обязана быть главным окном.
 Приложение:Переключить в обычный режим   if (Application.MainForm = nil) or      (Application.MainForm.ClientHandle = 0) then     raise EInvalidOperation.Create(SNoMDIForm);  unit basic;...implementationuses WindowProject;type  formProject = TfrmProject;var  frmProject : formProject;...procedure TfrmBasic.Button1Click(Sender: TObject);begin    frmProject:= TfrmProject.Create (nil);    with frmProject do      begin        Top := random (round(ClientWidth / 2));        Left := random (round(ClientHeight / 2));        FormStyle := fsMDIForm;        Show;      end;end;  unit WindowProject;...uses ....,  basic;...implementationuses WindowGL;type    formGL = TfrmGL;var    frmGL : formGL;...procedure TfrmProject.Button1Click(Sender: TObject);beginfrmGL := TfrmGL.Create (Self);with frmGL do      begin       ...       FormStyle := fsMDIChild;       Show;       ...      end;end;  unit WindowGL;uses ..., WindowProject;...procedure TfrmGL.FormClose(Sender: TObject; var Action: TCloseAction);begin   Action := caFree;end; procedure TfrmGL.FormCreate(Sender: TObject);begin  WindowS.SetParent(handle, frmProject.clientHandle)end;
|  |   Вопрос задал: Cooler (статус: Посетитель)Вопрос отправлен: 6 декабря 2007, 14:57
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Cooler!На cc.borladn.com была когда то заметка на эту тему. MDI форма должна быть объязательно главной. Хотя создавая формы(окна) на чистом апи вроде как можно обойти эту неприятность. Да и приводились рекомендации Майкрософт, что такая компоновка приложения нежелательна.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 6 декабря 2007, 23:05
 
 |  
 Мини-форум вопросаВсего сообщений: 4; последнее сообщение — 8 апреля 2011, 11:27; участников в обсуждении: 3. 
|   | Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 6 декабря 2007, 22:58 [#1]:Сдается мне, с присвоением родителя (и owner'а) перемудрил. frmProject:= TfrmProject.Create (nil); - может лучше от Application хотя бы?
 И WindowS.SetParent(handle, frmProject.clientHandle) смущает...
 |  
|   | Cooler (статус: Посетитель), 7 декабря 2007, 15:22 [#2]:Насчет frmProject:= TfrmProject.Create (nil); - может лучше от Application хотя бы? Пробовал, конечно... результат одинаков.
 |  
|   | Cooler (статус: Посетитель), 7 декабря 2007, 16:09 [#3]:Всем спасибо за обсуждение. Всё, я разрешил свою проблему. Всё прекрасно работает. Я создаю приложение, в котором из главной формы1 (fsNormal) при нажатии на кнопку создается форма2 (fsMDIForm). Далее при нажатии кнопки на форме2 создается форма3 (fsMDIChild). Уря!
 
 Вопрос закрыт.
 |  
|   | Valart (статус: Посетитель), 8 апреля 2011, 11:27 [#4]:Cooler: ты молодец конечно!!! А написать каким образом решил проблему было слабо? |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |