![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание TControl в произвольном окне с известным дескриптором [FPC, Windows]
Пётр © (2007-08-26 15:19:00)Здраствуйте.
Есть задача разместить контрол(панель) в произвольном окне. Известен хэндл окна. Хотелось бы, чтобы кроме процедуры создания панели, вся остальная работа проходила именно с PControl. Возможноли тако и что для этого нужно?
Если данный вопрос уже поднимался, пожалуйста дайте ссылку.
Спасибо.
Пётр (2007-08-27 19:52:00) [1]Проблема была не в этом, но она уже решена.
По умолчанию, windows.setParent работает для окон и контролов одного приложения, то есть если у меня в программе есть две формы, то я могу "перекинуть" панель с одной на другую. Но если "перекинуть" панель на форму другого приложения, то при первом же обращении к контролу панель возвращалась на ту форму, которой она принадлежала. Не знаю почему, но принудительное установление
panel.Style:=panel.Style OR WS_CHILD
решило проблему...
Спасибо за вашу помощь.
ANTPro (2007-08-26 21:54:00) [2]
procedure TForm1.Button1Click(Sender: PObj);
begin
Ctrl := NewPanel(Form, esRaised).SetPosition(10, 10).SetClientSize(50, 50);
SetParent(Ctrl.Handle, Panel1.Handle);
Ctrl.Show;
Ctrl.Left:=50;//Работает
Ctrl.Caption:='sdfsdfwsf';//Работает
end;
Пётр (2007-08-26 20:44:00) [3]Ваш метод работает. НО только до первого изменения свойств контрола. После изменения свойств контрол возвращается на прежнее место к прежнему родителю.
ANTPro (2007-08-26 16:40:00) [4]Возможно создать как обычно, а потом сменить предка функцией SetParent.