Форум: "KOL";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];
ВнизСоздание дочернего PControl для чужого окна Найти похожие ветки
← →
belest © (2007-02-28 17:36) [0]А как можно создать PControl (в моем случае - Panel, на которой лежат другие контролы), который будет дочерним для совершенно чужого окна?
Handle этого окна у меня есть. Причем, этих чужих окон может быть 5, а может и 25. И можно ли как-нибудь это сделать? Неужели придется все на чистом API переписывать? Используется KOL без MCK.
Я адаптирую toolbar к IE7. Все кнопочки и сам тулбар были сделаны на KOL. Но в IE6 создавался Applet и все клалось на него. Но я же не могу создавать по апплету на каждую вкладку! (Пробовал - глючит.)
← →
Vladimir Kladov (2007-02-28 20:14) [1]API никто не отменял, так что Windows.SetParent должно работать. По крайней мере, попробовать можно.
← →
belest © (2007-03-01 14:04) [2]Спасибо за подсказку. Но работает ровно так же (с теми же глюками), как и при создании апплета для каждой вкладки. Видимо, именно так делать и надо, а баги живут в другом месте. Дихлофос хочу! :-)
← →
thaddy (2007-03-01 14:08) [3]You not only need to use win32 api to set the parent, but also to subclass that parent and intercept its messageloop to intercept processing for your controls.
(getwindowlong, setwindowlong etc)
← →
mdw © (2007-03-02 01:22) [4]Да, есть такое. Аплет или что его заменяет (форма) ловит сообщения, которые до него доходят. Но доходит не все, особенно если родительское окно модальное. Недавно, просто занимался примерно тем же, встраивал свою панель с контролами в чужую форму. Довольно грустно получается, например кновка Left в едитах не работает (а вправо работает:)), таб тоже... Пришел к тому, что нужно или перехватывать оконную процедуру родителя и делать свой обработчик (геморойно это), или делать стиль встраивамого окна WS_POPUP, тогда работает все хорошо, но при фокусировке своего окна родитель теряет фокус. Не очень красиво.
У меня закончилось все благополучно, оказалось что исходная программа тоже на делфи написана (VCL), договорились с автором, переделал под VCL и счастье пришло... некто <PMG> этим же, помнится давно занимался, вроде как победил. У меня аська есть, правда редко живая, если нужно дам.
← →
alex3 (2007-03-04 19:58) [5]На форуме уже не раз появлялись, темы так или иначе упирающиеся,
в одно и то же место.
Значение Parent, при выполнении SetParent, в кол не меняется,
Функция API GetParent - возвращает нового хозяина.
Из этого можно зделать вывод, что, с точки зрения,
кол и API, поля содержащие Parent находятся в разных
местах. Очевидно, виду этого, происходит нарушение
алгоритма определения координат объекта. Объект просто
не знает, что у него поменяли хозяина.
Если организовать обработку координат на API,
проблем не возникает. Самое оптимальное решение-
если бы Vladimir Kladov пересмотрел алгоритм, с учетом
данной возможности - как ни как он самый компетентный в
этом вопросе. Или каждому изобретать что то свое.
У меня была сходная проблема, но я ее решил, средствами API.
← →
belest © (2007-03-06 13:34) [6]Все заработало, всем спасибо за помощь, а отдельное спасибо - Владимиру Кладову за подсказку Windows.SetParent. Сам бы не сообразил. :-( Матчасть учить надо!
2 alex3 - в "Книге по KOL" написано, что для PControl.Parent возвращает PControl, а для получения дескриптора (handle) родительского окна надо использовать PControl.ParentWindow. И PControl.ParentWindow у меня прекрасно работало.
← →
Alex3 (2007-03-07 17:44) [7]Прочитайте внимательно!
Речь идет о нарушении обработки координат, при передаче объекта
другому PARENT!
← →
Galkov © (2007-03-09 13:43) [8]Может следует завести "фиктивное" окно, которое не посылает нотификации паренту, но честно переправляет их чайлдам через CM_XXX....
← →
alex3 (2007-03-09 17:05) [9]Говорю же, что на API проблем нет!
Top - нормально, а вот left и размеры,
непонятно, то ли Экранные то ли относительно
родного окна, точно сейчас не помню.
← →
Galkov © (2007-03-09 19:16) [10]
> Говорю же, что на API проблем нет!
Это не открытие Америки. Если проблемы "на API", то писать надо не на этот форум, а Биллу.
Вопрос в топике шел о пристегивании KOL-овского контролла, насколько я понимаю.
Который о своих действиях сообщает нотификациями в парент.
Если этот парент KOL-овский, то эти сообщения переправляются опять на нашу форму "своими" CM-мессагами...
Если "чужой", то это проблема - он ничего не переправляет.
И если Вы на нее не наступили, это не значит еще, что ее нет
Если я чего-то не правильно понимаю - покажите, пожалуйста....
← →
alex3 (2007-03-11 14:49) [11]На АРI все нормально отрабатывается,
проблема отработки в kol, я свою проблему решил уже давно,
для меня она не актуальна. Но зачем же дважды наступать на
грабли? Если еще кто то на них напорется? Парент чужой.
Применение - все возможные плагины и так далее.
Для понимания проблемы: передаем елемент чужому
парент( не коловскому), считываем и устанавливаем его координаты,
смотрим что из этого получается.
← →
Galkov © (2007-03-11 20:02) [12]alex3
понять содержание Вашего поста крайне затруднительно.
То, что на API все прекрасно отрабатывается - это не информация, а аксиома.
Если не отрабатывалось бы, ни в каких библиотеках просто не было бы смысла. И о чем этот форум было бы просто не понятно.
Единственно, что я понял нового - для Вас эта не проблема уже не актуальна.
Но не понял зачем это Вы рассказываете народу...
Ну, наши поздравления, если за этим....
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c