Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2009, 22:20   #1
nimbler
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 15
По умолчанию Вопрос по MDI окнам в Delphi.

Мне нужно в парограмму добавить MDI окно с несколькими дочерними окнами. Я создаю 2 формы, одна FormStyle = fsMDIForm, другая FormStyle = fsMDIChild. Главная форм появляется нормально, а вот при создании дочерней появляется ошибка "Нет активных MDI окон".

Всё дело в том, что в коде VCL сделано через жопу , что если главная форма не MDI, то в программе не может быть других MDI.

Цитата:
Вот фикс этой проблемы

все mdi формы должны наследоваться от этой формы.
mdichild формы должны иметь владельцем форму mdi, т.е.

Код:
TMyMdiChildForm.Create(MyMdiParent)
Я пробовал писать: Например Form3 := TForm3.Create(Form4) вместо Form3 := TForm3.Create(Application) не работает

У меня не очень много опыта в программировании, помогите разобраться как это сделать. Очень надо. С меня пиво или ещё что нибуть!
nimbler вне форума Ответить с цитированием
Старый 25.06.2009, 23:12   #2
-HunteR-
Форумчанин
 
Аватар для -HunteR-
 
Регистрация: 04.11.2007
Сообщений: 117
По умолчанию

Попробуйте:
Код:
TChildForm.Create(Self); просто создание дочернего окна
MDIChildCount - количество дочерних окон.
(ActivemDIChild as TChildForm) - активное дочернее окно
свойство name у дочерней формы было: ChildForm
Сам сейчас с ними работаю. Вот нашел полезную ссылку:http://articles.org.ru/lection/manywin.php
Перед тем, как выложить код, я его всегда проверяю.
Если помог - тыкни на на весы слева, под аватарой.

Последний раз редактировалось -HunteR-; 25.06.2009 в 23:43.
-HunteR- вне форума Ответить с цитированием
Старый 26.06.2009, 08:49   #3
nimbler
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 15
По умолчанию

Я сделал вот так:

Код:
procedure TConsol.FormCreate(Sender: TObject);
var
  RootConsol : TRootConsol;
begin
  RootConsol := TRootConsol.Create(Self);
  RootConsol.Show;
end;
Не помогает, всё равно пишет ошибку.

Как сделать так вот это:
Цитата:
все mdi формы должны наследоваться от этой формы.
mdichild формы должны иметь владельцем форму mdi, т.е.

Код:
TMyMdiChildForm.Create(MyMdiParent)
nimbler вне форума Ответить с цитированием
Старый 26.06.2009, 09:12   #4
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

при создании TForm3 на обработчик напиши
application.createform(TForm3,Form3 );
Form3.show;
у меня этот код работает очень успешно
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 26.06.2009, 09:21   #5
nimbler
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Toxa Посмотреть сообщение
при создании TForm3 на обработчик напиши
application.createform(TForm3,Form3 );
Form3.show;
у меня этот код работает очень успешно
Написал вот так:
Код:
procedure TConsol.FormCreate(Sender: TObject);
var
  RootConsol : TRootConsol;
begin
  application.createform(TRootConsol,RootConsol );
  RootConsol.show;
end;
Всё равно выдаёт ошибку:


Consol - MDI форма, вся проблема что она неглавная в проекте
RootConsol - MDIChild

Вот что пиблизительно должно получиться:


PS: я пишу эмулятор интерфейса Windows.
nimbler вне форума Ответить с цитированием
Старый 26.06.2009, 11:25   #6
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

а что за ошибку выдает?
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 26.06.2009, 11:27   #7
nimbler
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Toxa Посмотреть сообщение
а что за ошибку выдает?
вот:


Типа нет MDI форм
nimbler вне форума Ответить с цитированием
Старый 26.06.2009, 11:29   #8
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

сори, не видел, картинки отключены.
а покажи код dpr-ника
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 26.06.2009, 16:16   #9
nimbler
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 15
По умолчанию

Код:
program YaWin;

uses
  Forms,
  LogoScreen in 'LogoScreen.pas' {LogoForm},  //Главная форма она запускается
  Udecktop in 'Udecktop.pas' {fmMain},            
  uParent in 'uParent.pas' {ParentForm},
  uSettings in 'uSettings.pas' {Wnd_Settings},
  uExit in 'uExit.pas' {SupDown},
  uConnectWiz in 'uConnectWiz.pas' {ConnectWiz},
  uPerform in 'uPerform.pas' {Wnd_perform},
  uConnectProp in 'uConnectProp.pas' {ConnectProp},
  uAbvConnProp in 'uAbvConnProp.pas' {AbvConnProp},
  uIPSecSettings in 'uIPSecSettings.pas' {IPSecSett},
  uConsol in 'uConsol.pas' {Consol},        // MDI форма
  uRootConsol in 'uRootConsol.pas' {RootConsol}, // MDI Child
  uIE in 'uIE.pas' {IE},
  uConnectSett in 'uConnectSett.pas' {ConnectProp2},
  uOsnAdd in 'uOsnAdd.pas' {Lab4_add},
  uOsnAdd2 in 'uOsnAdd2.pas' {Lab4_add_os},
  uAbout in 'uAbout.pas' {AboutForm};

{$R *.res}

begin
  //with Application do
  Application.Initialize;
  Application.CreateForm(TLogoForm, LogoForm);
  Application.CreateForm(TfmMain, fmMain);
  Application.Run;
end.
nimbler вне форума Ответить с цитированием
Старый 07.07.2009, 11:59   #10
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

сори что поздно отвечаю
а LogoForm случаем не дочерняя форма?
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MDI (Delphi) VadEr Помощь студентам 6 30.04.2011 18:12
Delphi. MDI HoLToFF Фриланс 1 31.05.2009 07:40
delphi 9 или delphi 2005 вопрос о работе Doget Компоненты Delphi 0 07.07.2008 08:50
И опять вопрос по MDI-приложению Технолог Общие вопросы Delphi 24 08.05.2008 18:07