Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Проблемка с окнами


Автор: Falcon 14.3.2007, 16:36
Я в программе использую следующую структуру окон - одно главное, на весь экран и несколько дочерних в области главного. 
1) при запуске программы открывается главное окно, потом я из меню открываю другое окно, а из него еще одно. Так вот, третье окно открывается, но ему не передается курсор, оно скрывается за вторым окном и приходится сворачивать второе.
2) как сделать так чтобы при нажатии на закрытие окна (крестик в углу) выполнялась моя функция. приходится ее (кнопку) вовсе убирать и ставить свою кнопку Выход, а это нейдобно. 

Автор: MetalFan 14.3.2007, 16:46
 ошибка в 17 строке...

Автор: VICTAR 14.3.2007, 16:47
Цитата(Falcon @  14.3.2007,  16:36 Найти цитируемый пост)
1) при запуске программы открывается главное окно, потом я из меню открываю другое окно, а из него еще одно. Так вот, третье окно открывается, но ему не передается курсор, оно скрывается за вторым окном и приходится сворачивать второе.

Form.Show (если окно уже показано, то можно Form.SetFocus)

Цитата(Falcon @  14.3.2007,  16:36 Найти цитируемый пост)
2) как сделать так чтобы при нажатии на закрытие окна (крестик в углу) выполнялась моя функция. приходится ее (кнопку) вовсе убирать и ставить свою кнопку Выход, а это нейдобно.  

Ищи по поиску. Обсуждалось оч много раз

Автор: Falcon 14.3.2007, 17:07
второй вопрос решился, а по первому - те варианты не помогают

Автор: Rennigth 14.3.2007, 17:13
Falcon, проверь не стоит ли у формы StayOnTop.

Автор: VICTAR 14.3.2007, 17:15
может так получится
Код

SetForegroundWindow(Form3.Handle);

Автор: Rennigth 14.3.2007, 17:16
Цитата(Rennigth @  14.3.2007,  17:13 Найти цитируемый пост)
Falcon, проверь не стоит ли у формы StayOnTop. 

У Form2 имеется ввиду

Автор: MetalFan 14.3.2007, 17:41
Цитата(Falcon @  14.3.2007,  16:36 Найти цитируемый пост)
но ему не передается курсор

что-что ему не передается?
какой курсор? 
может фокус ввода?
как показываешь это третье окно?

Автор: Falcon 14.3.2007, 17:52
Цитата(MetalFan @ 14.3.2007,  17:41)
Цитата(Falcon @  14.3.2007,  16:36 Найти цитируемый пост)
но ему не передается курсор

что-что ему не передается?
какой курсор? 
может фокус ввода?
как показываешь это третье окно?

да я имел ввиду фокус ввода. 
при открытии главного окна автоматически открываются все дочернии окна, я их спрятал так:ShowWindow(fmNewA.Handle, SW_HIDE);
а потом по мере надобности я открываю нужное окно так:
ShowWindow(fmNewA.Handle, SW_SHOW);
но если я открыл одно окно, а потом из него третье (третье раза в два меньше второго), то третье открывается, скрывается за вторым.

Добавлено @ 17:58 
Цитата(VICTAR @ 14.3.2007,  17:15)
может так получится
Код

SetForegroundWindow(Form3.Handle);

нет не помогло

Автор: MetalFan 14.3.2007, 18:06
Falcon, глюки потому, что нефиг извращаться с VCL средствами WinAPI.
чем тебе методы Show и Hide не прокатили?

Автор: Falcon 14.3.2007, 18:17
Цитата(MetalFan @ 14.3.2007,  18:06)
Falcon, глюки потому, что нефиг извращаться с VCL средствами WinAPI.
чем тебе методы Show и Hide не прокатили?

я их и не пробывал, просто увидел в исходниках программы одной так управляли окнами, я вот и решил тоже так сделать. Попробую обычными средствами.

Автор: Falcon 15.3.2007, 11:29
Подскажите, пожалуйста, как сделать так, что бы при открытой третьей форме нельзя было переключаться на другие формы этой программы? (все та же программа и структура окон)

Автор: yus 15.3.2007, 11:32
Сделай ее модальной.
ShowModal

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)