| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > трабблы с не главной MDI формой |
| Автор: mrhell 11.9.2008, 18:25 | ||||||
| Есть программа на Delphi 7, к ней там же был написан плагин. Плагин представляет из себя mdi - форму для работы с графикой. Так в VCL предусмотрена как mdi форма только главная форма, то пришлось идти обходными путями - у дочерней формы изменить CreateWindowHandle
в mdi форме изменен код загрузки child форм
код создания mdi окна
Так вот, на простом примере, где тестился плагин все это работало стабильно, но когда я прикрутил его к основной программе, то при попытке открыть окно dll вываливается с ошибкой, иногда правда не вываливается, но происходит это тогда, когда главная форма, полностью закрыта mdi окном из dll, а припопытке переместить mdi форму - вываливается пресловутая ошибка, которую нельзя отловить. Что делать, может кто нибудь предложить какоенибудь решение проблемы? [code=delphi] |
| Автор: Akella 11.9.2008, 23:39 |
| А что, в плагине обязательно использовать MDI? Может можно обычную форму создавать? |
| Автор: mrhell 12.9.2008, 09:49 |
| для моей задачи mdi форма была бы намного удобне, так как плагин представляет из себя редактор графики с расширинными возможностями или что вы имели ввиду? сделать mdi форму - главную? также проблема точно в dll, так как прикрутив код плагина к исходникам приложения - я такую ошибку уже не получаю |
| Автор: mrhell 12.9.2008, 13:15 |
| Удалось локализовать источник - похоже Application.Mainform, пришел к этому выводу, так как когда окно плагина полностью закрывает окно основного приложения, то никаких багов не вылезает, а когда часть окна основного попадает на отрисовку - тутже появляется ошибка попробовал сделать все это в bpl - при создании дочернего окна вываливается ошибка 1407 не удается найти класс окна, RegisterClasses() не помогает |
| Автор: mrhell 13.9.2008, 18:08 |
| попытался реализовать плагин в bpl — получил ошибка 1407 не удается найти класс окна, при открытии child формы (( С dll прояснилось следующее - если убрать меню в основном приложении, то ошибок не возникает, то есть как то связано с объединением меню родителя и дочернего окна более того - меню child формы объединяется с меню формы основного приложения |