Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-71950
napil
2003-08-26 22:08
2003.09.22
домин


6-71807
Arhangel
2003-07-21 11:48
2003.09.22
indy компонент - IdMappedPortTCP


3-71556
Russko
2003-08-29 13:15
2003.09.22
Работа с TTable


14-71955
Карелин Артем
2003-08-29 15:26
2003.09.22
Жигули VS Мерседес.


6-71790
Blondin
2003-07-22 14:56
2003.09.22
Подтверждение получения письма





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский