Главная страница
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.024 c
14-71905
Nik8.
2003-09-03 11:27
2003.09.22
Прикольная история недавно прочитал


14-71934
MBo
2003-09-02 16:27
2003.09.22
Не для слабонервных.


3-71492
krotik
2003-09-01 15:27
2003.09.22
Теоретический вопрос про оффлайн-передачу данных


8-71767
landy
2003-05-22 13:59
2003.09.22
text-to-speech engine


1-71641
Vt
2003-09-09 02:43
2003.09.22
НЕ модальная форма перекрывает модальную