Форум: "Базы";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
ВнизУв. мастера помогите разобраться с MDI формами Найти похожие ветки
← →
konst (2003-09-01 09:35) [0]Простите за некоторый офтоп, но в соседнем форуме мне ничего толкогого не подсказали. Это моё первое более или менее серьёзное приложение (небольшая БД) и у меня остаются небольшие вопросы по интерфейсу. Я понаделал обычных форм(FormStyle=fmNormal), но дело в том что при таком подходе, как я понял, невозможно сделать раздел меню "Окна" с отображением там всех открытых окон и упорядовачинием их. Кроме того все формы равнозначны и подчинённые формы не вписываються в рамки главной (т.е. главная форма легко может закрыть собой подчинённую и пользователь её не увидит.) Вроде как я понял надо делать одну главную форму FormStyle=fmMDIform, и далее подчинённые FormStyle=fmMDIChild. Но как с ними работать? С простыми формами проходит Form.Close и Form.Open. А здесь они отображаются все вместе. Как их закрыть? А потом открыть? В примере MDI приложения (что в самом DELPHI) всё понятно там создаются новые формы, а потом удаляются и имена им присваиваются в процессе. А как быть если у меня формы уже есть, и их не надо создавать? Или я всё перепутал и MDI здесь не причём?
← →
GRAND (2003-09-01 09:46) [1]Чтобы корректно закрыть немодальную форму, надо в обработчик события OnClose прописать строчку:
Action:=caFree
← →
GRAND (2003-09-01 09:50) [2]Далее по поводу отображения списка окон в тебю...
1. Позаботься о том, чтобы все немодальные формы в проекте имели FormStyle=fsMDIChild
2. Создай пункт меню "Окна" (не путать с Нагиевым :))
3. Накидай туда подпунктов типа "Каскадом", "Разместить" и т.п. (обрабатывать эти действия надо вручную по одной строчке на каждое действие)
4. У главной формы натрави сво-во WindowMenu на ту самую, которая и есть "Окна".
← →
имя (2003-09-01 09:53) [3]Удалено модератором
← →
dimm (2003-09-01 09:59) [4]
> Чтобы корректно закрыть немодальную форму, надо в обработчик
> события OnClose прописать строчку:
> Action:=caFree
Это я уже делал, а потом как открыть форму?
← →
konst (2003-09-01 10:02) [5]Во во и у меня.
← →
GRAND (2003-09-01 10:03) [6]Если форма немодальная, то Form1.Show
← →
Vlad (2003-09-01 10:03) [7]>dimm (01.09.03 09:59) [4]
Есть такая функция - ShowModal.
Тебе же Sergey. Masloff все объяснил ?
Делаешь форме Create,ShowModal,Free каждый раз когда ее необходимо открыть
← →
MMF (2003-09-01 10:04) [8]>dimm (01.09.03 09:59)
Вставь в обработчик OnDestroy закрываемой формы строчку myForm:=nil;
а в вызывающей форме: if not(assigned(myForm)) then myForm:=TmyForm.Create(Application);
myForm.Show;
← →
jocko (2003-09-01 10:06) [9]sorry а nil там нигде не нужен?...
← →
Vlad (2003-09-01 10:08) [10]>jocko © (01.09.03 10:06) [9]
>sorry а nil там нигде не нужен?...
Ты про что ? ТАМ - это где ?
← →
Zacho (2003-09-01 10:09) [11]
> MMF © (01.09.03 10:04) [8]
> >dimm (01.09.03 09:59)
> Вставь в обработчик OnDestroy закрываемой формы строчку
> myForm:=nil;
> а в вызывающей форме: if not(assigned(myForm)) then myForm:=TmyForm.Create(Application);
> myForm.Show;
А вот это точно - моветон. Поле такого следующий вопрос в форуме может быть такой : " Почему у меня в программе переодически появляется ошибка Access Violation и как с ней бороться ? "
← →
MMF (2003-09-01 10:13) [12]>Zacho © (01.09.03 10:09) [11]
Поясни, откуда возьмется AV. При разрушении формы можно очистить переменную.
← →
Zacho (2003-09-01 10:16) [13]
> MMF © (01.09.03 10:13) [12]
Сорри, прогнал. AV не будет.
Но использование глобальных переменных - указателей на объект в методах этого же класса - все равно моветон. А если объектов типа TMyForm будет больше одного ?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c