![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не работает SetParent [D6]
AFROLOV © (2002-03-20 15:06:00)Всем привет.
Не работает SetParent.
Я хочу посадить своей форме нового родителя.
Вот пример кода:
procedure TListBoxForm.ShowForm(NP:HWND;Main_WND:HWND);
var
OldParent:HWND;
begin
ListBox1.Items.Add("Parent New:="+IntToHex(NP,8));
ListBox1.Items.Add("Parent Old:="+IntToHex(GetParent(ListBoxForm.Handle),8));
OldParent:=Windows.SetParent(ListBoxForm.Handle,NP);//Parent почему то не изменяется :-(
ListBox1.Items.Add("Parent:="+IntToHex(GetParent(ListBoxForm.Handle),8));
Visible:=true;
end;
Форма создается при запуске приложения
..
Application.CreateForm(TListBoxForm, ListBoxForm);
..
AFROLOV (2002-03-21 15:50:00) [1]Через Hook слишком много сообщений надо обрабатывать.
И потом ксть такой метод Form1:=TForm1.CreateParented(My_Wnd);
Это работает только надо отслеживать момент закрытия окна My_Wnd иначе возникает ошибка.
troits (2002-03-20 19:58:00) [2]Может это и можно сделать, но для SetParent параметры должны принадлежать одному процессу. Можно попробовать через Hook.
AFROLOV (2002-03-20 17:24:00) [3]Нет, мне мне нужен именно Windows Parent. Я хочу сделать окошко в MSWord типа того в котором в редакторе Delphi после ввода "." появляются свойства объекта. Мне народ присоветовал сделать окно редактора MSWord родительским для моей формы с ListBox.
MBo (2002-03-20 15:36:00) [4]ты, может, путаешь Windows - Parent и VCL-Parent.
форме VCL-Parent вообще-то не нужен.
а менять его у любого контрола можно так
AControl.Parent:=NewParent;
Если тебе надо сменить владельца (Owner), который отвечает за освобождение, то не стоитделать этого из собственного обработчика.