Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подмена хэндла [D7, WinXP]


Still Swamp ©   (2005-05-30 16:22:00) 

Есть некий Form:ТForm c набором компонент и прочего. Хочется что бы это все отображалось на некой Panel:TPanel. Можно ли это сделать?


Гаврила   (2005-05-31 15:35:00) [1]

При варианте с DLL передавать только handle, никаких parent:=...

Form1.ParentWindow:=AHandle;

(при условии билда без ран-тайм пакетов)
А Align наверно придется разруливать руками


Still Swamp   (2005-05-31 14:20:00) [2]

и то верно...
:(


evvcom   (2005-05-31 14:11:00) [3]

блин, да никак! Это будут разные классы TWinControl в exe и TWinControl в dll, хотя и имеют идентичный код и одинаковые имена. Отсюда и глюки.


Still Swamp   (2005-05-31 13:54:00) [4]

Хм.... а как имея Handle определить WinContol что бы написать DLLForm.Parent:=Control.


Still Swamp   (2005-05-31 13:41:00) [5]

О! - хорошая идея. А передам ка я Handle вместо TWinControl...


evvcom   (2005-05-31 13:35:00) [6]

Тогда либо не передавай между модулями (exe, dll) никакие классы, либо приготовься к глюкам.


Still Swamp   (2005-05-31 13:09:00) [7]

НЕТ! До сих пор избегал - надеюсь и сейчас удастся.


evvcom   (2005-05-31 13:06:00) [8]

Опять вынос VCL в dll! Use run-time packages галка стоит?


Still Swamp   (2005-05-31 12:19:00) [9]

Ок. Теперь теперь другая грабля:
DLLForm:TForm мой описан в DLL. Вывод осуществляется в HostWinControl:TWinControl. В DLL я передаю HostWinControl.

Далее такой эффект:

Если я использую SetParent(DLLForm.Handle,HostWinControl.Handle) то у меня не работает свойство DLLForm.Align:=alClient.

Если DLLForm.Parent:=HostWinControl  выводится сообщение допустем Spliter no have parent window при попытке подергать сплитер на DLLForm.


easy   (2005-05-30 18:46:00) [10]

windows.SetParent(form.Handle,panel.Handle);


Гаврила   (2005-05-30 16:41:00) [11]

Я так делал ,все работало
во первых, присвоение parent до Show
во вторых, show после присвоения Parent
в третиих - координаты формы (Left, Top) - теперь относительно панели ,а не Десктопа


evvcom   (2005-05-30 16:37:00) [12]


> Хочется что бы это все отображалось на некой Panel

А панель где? Используй TFrame.


Still Swamp   (2005-05-30 16:32:00) [13]

Не... ему не нравится.
Форма если имела Show пропадает (естно) но на нужном контроле не появляется ничего.


Гаврила   (2005-05-30 16:27:00) [14]

Можно
присвой форме соотв. parent
Form1.Parent:=PaneL1


Наверх

Титульная страница Поиск, карта сайта Написать письмо