Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.22;
Скачать: CL | DM;

Вниз

Ув. мастера помогите разобраться с 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-71634
AlexKainov
2003-09-09 11:18
2003.09.22
Форма-активатор


1-71578
Pavel Oliynik
2003-09-10 10:06
2003.09.22
что за бага ? enable:=false модального окна


1-71735
WeCom.WS
2003-09-09 19:40
2003.09.22
проблема с Тулбарами MS Word а в OleContainer е


1-71651
P0tia
2003-09-08 21:19
2003.09.22
Как сделать, чтобы иконка показывалась только около часов?


1-71709
Dysan
2003-09-10 18:01
2003.09.22
работа с Excel 2000