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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2010, 17:02   #1
JK0
Пользователь
 
Регистрация: 01.09.2010
Сообщений: 26
По умолчанию установить номер активного дочернего окна MDI Delphi

Подскажите, пожалуйста, как определить номер активного дочернего окна MDI?
JK0 вне форума Ответить с цитированием
Старый 20.10.2010, 17:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Зачем номер? Используй свойство ActiveMDIChild у главной формы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.10.2010, 17:19   #3
JK0
Пользователь
 
Регистрация: 01.09.2010
Сообщений: 26
По умолчанию

Новым окнам присваивается значение caption := 'окно'+inttostr(MDIChildCount), а при сохранении, если у окна имя окно1 или окно2..., вызывается диалог (т.е. файл новый, ранее не сохранённый) в противном случае в caption записан savedialog1.filename и файл без лишних вопросов сохраняется в то же место.
Кстати, такой вариант не работает

file_name:= TFdoc(ActiveMDIChild).Caption; // TFdoc класс дочерних форм
for i:=MDIChildCount downto 0 do //file_name переменная типа string
if MDIChildren[i]=TFdoc(ActiveMDIChild) then k:=i;
if file_name='окно+ inttostr(k) then
JK0 вне форума Ответить с цитированием
Старый 20.10.2010, 18:29   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Новым окнам присваивается значение caption := 'окно'+inttostr(MDIChildCount),
Не понимаю... Зачем помещать это значение в Caption, когда в каждой форме можно сделать поле числовое, и в него помещать индекс.

Давай ка опиши свою задачу как можно подробнее, я уверен что решается она гораздо по другому.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.10.2010, 00:36   #5
JK0
Пользователь
 
Регистрация: 01.09.2010
Сообщений: 26
По умолчанию

Создаётся текстовый редактор: родительское окно - пустая форма с main menu, дочерние - richedit с панелью инструментов. Должен действовать как Word. Собственно, caption := 'окно'+inttostr(MDIChildCount) выводить не обязательно, но как-то называть вновь открытые окна нужно, если в пустом дочернем окне открывается существующий файл, то его имя помещается в caption. Заморочка с сохранением описана выше: т.е. программа должна понимать где редактируется существующий (сохранённый ранее) файл, а где новый (ранее не сохранённый).
p.s. Виталий, спасибо, что откликнулись.
JK0 вне форума Ответить с цитированием
Старый 21.10.2010, 09:11   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
т.е. программа должна понимать где редактируется существующий (сохранённый ранее) файл, а где новый (ранее не сохранённый).
об этом должна помнить и понимать сама дочерняя (MDI) форма и сохранять себя тоже должна она сама. Главная форма только инициирует процедуру сохранения (не указывая куда и как) и возможно проверяя успешность (вдруг пользователь во время диалога дочерней формы вспомнил о том что забыл поставить в конце предложения точку или забыл воткнуть флешку. короче говоря на вопрос сохранить? выбрал из трех возможных вариантов (ДА/НЕТ/ОТМЕНА) выбрал Отмена.

Путь и имя файла можно и нужно хранить в private переменной MDI формы.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 21.10.2010, 12:10   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но как-то называть вновь открытые окна нужно
Для этого есть свойство Name, туда и пиши название окна.
Или в принципе можно свое свойство прикрутить
Цитата:
программа должна понимать где редактируется существующий (сохранённый ранее) файл
См. evg_m.
Каждая форма должна работать только со своим файлом. Нечего все действия сажать на главную форму.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.10.2010, 09:45   #8
JK0
Пользователь
 
Регистрация: 01.09.2010
Сообщений: 26
По умолчанию

Вы как всегда правы Воистину, правильная постановка (и понимание) задачи -70% её решения!
JK0 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получения текста из ListBox дочернего окна / Delphi itsme Помощь студентам 1 13.01.2010 14:14
главное MDI без заголовка дочернего vlad_ Общие вопросы Delphi 3 27.11.2009 01:51
Confirm при закрытии активного окна Jensi JavaScript, Ajax 4 17.08.2009 19:06
Поиск активного окна Arigato Win Api 5 22.11.2008 18:32
Как сделать чтобы дочерние окна в MDI-приложениях были вне главного окна??? dimonchuk Общие вопросы Delphi 1 11.08.2007 12:13