|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблемы с Windows.SetParent (form3.Handle, form2.Handle)
form2 это MDIChild. В нем создается обычная форма form3.
Код:
procedure TForm1.Button1Click(Sender: TObject); begin form2:=Tform2.Create(application); form3:=Tform3.Create(application); form3.Show; Windows.SetParent(form3.Handle, form2.Handle);//ВАРИАНТ 1 //form3.ParentWindow:=form2.Handle; //ВАРИАНТ 2 end; ВАРИАНТ 1 Если делать первым вариантом, то когда активна вложеная форма 3,то форма 2 и форма приложения не активны. А если до снятия фокуса с приложения была активна вложеная форма 3, и окно приложения спряталось за окна других приложений, то вывести его на первый план не удается, так как оно какбы так и остается неактивным.И когда активна дочерняя форма 2, то соответственно форма 3 не активна получается и на ней не работают хоткеи (Таб например) и контролы без фокуса. ВАРИАНТ 2 Все работает с активностью форм нормально, но контролы не получают фокус на вложеной форме 3 и не работаю хот кеи |
#2
|
|||
|
|||
Form3.CreateParented() спасет отца русской демократии.
А вот по поводу хоткеев и фокуса - это известная фича. Последний раз это решалось с помощью трансляции сообщений винды в дочернее окно, если оно само активно. |
#3
|
|||
|
|||
Цитата:
|
#4
|
|||
|
|||
Цитата:
|
#5
|
|||
|
|||
Цитата:
Отлавливать все сообщения и транслировать их через SendMessage/PostMessage дочернему окну. |
#6
|
||||
|
||||
Я конечно не тестировал, ибо лень. Но думаю, что раз третья форма является дочерней от второй, то и владельцем при создании надо указывать вторую форму, а не приложение.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#7
|
|||
|
|||
Не помогает, в свое время проверял.
Хотя, у меня был вариант с формой в dll... может, если в одном приложении, то поможет. |
#8
|
|||
|
|||
CreateParented, не помогает,так же не помогает
чсвойство третей формы Parent и ParentWindow. Нужно транслировать сообщения, но я не знаю как.Подскажите пожалуйста!Что перекрывать и как транслировать, чтобы все сообщения от третей формы передавались ее родителю второй? |
#9
|
|||
|
|||
Тут наоборот, скорее из родителя надо транслировать в дочернюю.
Ну, скорее всего надо оттранслировать как минимум всю группу нажатий кнопок. Может еще чего по ходу потребуется. |
#10
|
|||
|
|||
Цитата:
|