|
|
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
Для приложения нужен плагин в виде dll, в нем будет TForm и TFrame. Меня ждало эпичное разочарование как вы уже могли догадаться. В начале начал считать себя полным дураком когда TFrame не хотел отрисовываться и когда выдавал "not Assign TFont" Пошел гуглить и я был разачораван еще больше, решения нет в природе. Потом решил использовать TForm вместо фрэйма, и тут блин меня ждет опять разочарования. Код: pascal 1. 2. 3. Форма рисуется в окне но управление могут получить только кнопки, edit и memo в ступоре. Есть пара вопросов: bpl-ки не предлогать 1. Есть ли у кого нибудь рабочее решения по Созданию и отображению TFrame из dll ???? 2. Как исправить ситуацию с TForm, что бы форма получала управление??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 16:10:40 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
crause1. Есть ли у кого нибудь рабочее решения Поверить первому впечатлению в третьей строке и сменить работу на адекватную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 16:13:05 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
Меня моя работа вполне устраивает. Такая грабля только в Embarcadero-продуктах или в том же Visual Studio тоже самое? Или Windows виноват? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 16:25:00 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
crause, Form.ParentWindow := TWinControl(AOwner).Handle; т.е. внутри формы должна быть другая форма? или твоя форма должна просто открыться что-то сделать и закрыться. Если вариант 1, то ответ здесь 16027901 Если вариант два, то не назначай Parent. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 16:46:23 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
Да именно первый вариант. Такая грабля только в Embarcadero-продуктах или в том же Visual Studio тоже самое? Или Windows виноват? Как строить модульное приложение на Delphi? Что бы в качестве плагинов были dll и можно было на главной форме рисовать формы и фрэймы? Как это делают корпаративные клиенты Embarcadero? Или они все в одно приложение пихают и когда нужно что то новое добавить компилят весь проект заново? Спасибо за внимание!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 17:15:15 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
crauseКак это делают корпаративные клиенты Embarcadero? Или они все в одно приложение пихают и когда нужно что то новое добавить компилят весь проект заново? До решения этой задачи нужно пройти долгий мучительный путь, длиной не в один год. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 18:18:10 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
Я же не прошу код или библиотеку. Смысл и теорию. Если знаете поделились бы идеей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 18:40:06 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
crause, 1) Сходи на сайт TotalCommander - там есть статейка (старая правда), как организовать плагин в виде формы с RichEdit`ом для Тотала. Пример работоспособный. 2) Фреймы в ДЛЛ - без правки исходников VCL - забудь - ничего путного не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 18:45:49 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
DarkMastercrause, 1) Сходи на сайт TotalCommander - там есть статейка (старая правда), как организовать плагин в виде формы с RichEdit`ом для Тотала. Пример работоспособный. 2) Фреймы в ДЛЛ - без правки исходников VCL - забудь - ничего путного не получится. Фрэймы откинул сразу после чтения гугла. Такая грабля только в Embarcadero-продуктах или в том же Visual Studio тоже самое? Или Windows виноват? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 18:50:46 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
crauseИли Windows виноват?Билл Гейтс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 18:56:40 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
crauseДа именно первый вариант. Такая грабля только в Embarcadero-продуктах или в том же Visual Studio тоже самое? Или Windows виноват? Как строить модульное приложение на Delphi? Что бы в качестве плагинов были dll и можно было на главной форме рисовать формы и фрэймы? Как это делают корпаративные клиенты Embarcadero? Или они все в одно приложение пихают и когда нужно что то новое добавить компилят весь проект заново? Спасибо за внимание!!! Я ж тебе ссылку показал на сообщение для первого варианта. йодновременное присутствие WS_CHILD и WS_CAPTION в стиле класса окна (что получится при Panent=someParentForm и BorderStyle<>bsNone) не позволяют такому окну нормально активироваться по клику юзера (кэпшен серый, в эдиты нельзя войти) - это багофича винды для нормальной активации приходится делать фокусируемому дочернему окну SendMessage(ChildFormThat Got Focus.Handle, WM_NCACTIVATE , 1 , 0); а его брату-соседу, потерявшему фокус - SendMessage(ChildFormThat Lost Focus.Handle, WM_NCACTIVATE , 0 , 0); багофича винды. Я реализовывал плагинную систему через псевдо MDI. 1 Dll(Bpl) - 1 форма. окна обычные, но ведут себя как MDI. Переопределив класс TForm и некоторые методы по расположению и поведению окон. Все формы плагина унаследуются только от нее. Вот тебе для размышления поведения VCL. На кнопку вешаешь. Код: pascal 1. 2. 3. 4. 5. 6. 7. И дочерняя форма всегда поверх главной. При том Parent у нее nil. А вот ее запрет за выход за границы основной формы разворачивание и прочее (аля MDI) уже реализовываешь сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 19:02:10 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
asviridenkovДо решения этой задачи нужно пройти долгий мучительный путь, длиной не в один год. Неверно. Есть два пути. Либо иметь мозги и за тридцать секунд поставить одну галку, либо мозгов не иметь, и тогда "долгий мучительный путь" будет вечным, до тех пор, пока не найдётся начальник либо сменщик с мозгами. Далее см. пункт 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 19:06:41 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
crauseДа именно первый вариант. Такая грабля только в Embarcadero-продуктах или в том же Visual Studio тоже самое? Или Windows виноват? Как строить модульное приложение на Delphi? Что бы в качестве плагинов были dll и можно было на главной форме рисовать формы и фрэймы? Как это делают корпаративные клиенты Embarcadero? Или они все в одно приложение пихают и когда нужно что то новое добавить компилят весь проект заново? Спасибо за внимание!!! Все по-разному. Я модули расширения в базе данных храню: залил новые модули, вот они сразу у всех клиентов и доступны. И доступ к модулям легко разграничить. В модулях всего одна экспортируемая функция, которая возвращают экземпляр класса, реализующего набор интерфейсов. Один из интерфейсов - содержит свойства, описывающие модуль (название, тип модуля и т.п.). Другие интерфейсы описывают группы свойство и методов, соответствующие конкретному типу модуля. Например, есть модули, которые встраиваются в визуальный интерфейс(появляются дополнительные пункты меню, панельки, закладки и т.п.) . А есть модули вообще невидимые, выполняющие какие-то специальные задачи - например, регистрирующие бизнес - события (утверждение документов, удаление справочников и т.п.). Реализовать легко, расширять легко. Только надо быть осторожными: например, можно умудриться выгрузить модуль при живой ссылке на интерфейс. Ну, такиеопасные вещи нужно собрать в общую библиотеку и тщательно отладить их. ... ... Для расширения функциональности вместо .dll еще можно использовать скриптовые языки. Кому что в голову взбредет, короче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 19:22:44 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
DarkMaster... 2) Фреймы в ДЛЛ - без правки исходников VCL - забудь - ничего путного не получится. crause... Фрэймы откинул сразу после чтения гугла. ... Какие-то чудовищные заявления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 19:26:11 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
crauseТакая грабля только в Embarcadero-продуктах или в том же Visual Studio тоже самое? Только в Embarcadero. Переходи на Visual Studio и будет тебе счастье. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 19:31:52 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
чччДВ модулях всего одна экспортируемая функция, которая возвращают экземпляр класса, реализующего набор интерфейсов. Один из интерфейсов - содержит свойства, описывающие модуль (название, тип модуля и т.п.). Имхо тут гораздо лучше обратный дизайн. Модуль вообще ничего не экспортирует; вместо этого он обращается к ядру и регистрирует свои фичи (для этого достаточно прописать такие вызовы в initialization). Как следствие, процесс становится проще, менее связанным и гораздо удобнее с точки зрения внесения изменений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 19:41:02 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
softwarer... Имхо тут гораздо лучше обратный дизайн. Модуль вообще ничего не экспортирует; вместо этого он обращается к ядру и регистрирует свои фичи (для этого достаточно прописать такие вызовы в initialization). Как следствие, процесс становится проще, менее связанным и гораздо удобнее с точки зрения внесения изменений. Может, в этом и есть смысл. Вопрос особенностей технической реализации. Мы особо не заморачивались выбором. Может, из-за того, что слишком быстро все заработало, и мы больше ядро не трогали, а все силы на прикладной функционал модулей бросили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 20:02:05 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
crauseЕсть ли у кого нибудь рабочее решения по Созданию и отображению TFrame из dll ? Если посмотреть дерево наследования, то можно заметить, что TFrame не сильно отличается от TForm. И, насколько я еще помню VCL, ничто не мешает расположить одну форму в другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 21:57:28 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
crauseТакая грабля только в Embarcadero-продуктах или в том же Visual Studio тоже самое? Или Windows виноват? Больше всех виноват Borland, который придумал пакеты и строго настрого запретил ими пользоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 22:29:54 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
crauseЯ же не прошу код или библиотеку. Смысл и теорию. Если знаете поделились бы идеей. crause, Добрый день, Делал такую штуку: приложение не создает форму, ее создает dll. Приложение работает с dll, хранящейся в БД. При запуске приложение соединяется с БД, вытягивает dll, если версия dll в БД не совпадает с текущей версией dll, вытянутой на предыдущих запусках приложения. Главная форма приложения создается в dll. На ней, кстати, есть frame-ы. Идея такой реализации очевидна: приложение стоит у многих пользователей. Чтобы изменить интерфейс меняем dll в одном месте(БД), все приложения ее подхватывают. Futuron от Dom.ru, если кто знаком, судя по отсутствию хинтов в приложении, так и работает. Основной совет - передавать в dll Application и Screen. Код(кусочно): Приложение: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. DLL: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. Форма в dll(демонстрация frame, TPageNavigatorFrame в свою очередь также содержит frame-ы): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. Проблема Cannot assign TFont с хинтами(а еще со скроллом одного из компонент) остается. Пока решение нашлось только в билде и приложения и библиотеки с опцией Link with runtime packages. При этом достаточно одного пакета vcl. Рядом с приложением после такого билда необходимо будет положить файлы rtlXXX.bpl и vclXXX.bpl. XXX - зависит от версии Delphi. Точные названия файлов также можно будет узнать, запустив приложение на машине без установленного Delphi - при запуске будут сообщения об отсутствии данных файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 10:12:10 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисcrauseТакая грабля только в Embarcadero-продуктах или в том же Visual Studio тоже самое? Или Windows виноват? Больше всех виноват Borland, который придумал пакеты и строго настрого запретил ими пользоваться. BPL - всем удобны за исключением одной маленькой штуки - они должны компилироваться одной версией во избежание. Поддержка от сторонних плагинописателей становится проблематичной. В принципе у GunSmoker`a есть хороший набор статей о написании плагинов - для ТС - самое то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 10:44:58 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
crauseПотом решил использовать TForm вместо фрэйма, и тут блин меня ждет опять разочарования. Код: pascal 1. 2. 3. Форма рисуется в окне но управление могут получить только кнопки, edit и memo в ступоре. Есть пара вопросов: bpl-ки не предлогать 1. Есть ли у кого нибудь рабочее решения по Созданию и отображению TFrame из dll ???? 2. Как исправить ситуацию с TForm, что бы форма получала управление??? Я делаю так: Код: pascal 1. 2. 3. 4. 5. Тоже не идеальный вариант (не работает перебор контролов клавишей Tab), но хотя бы использовать можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 11:05:39 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
DarkMasterBPL - всем удобны за исключением одной маленькой штуки - они должны компилироваться одной версией во избежание. Поддержка от сторонних плагинописателей становится проблематичной. Поддержка от сторонних плагинописателей нужна в 0.01% проектов; остальные играют роль неуловимого Джо. Тем не менее, проблематичной она не становится, поскольку есть два пути её сделать, один простой, другой правильный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 11:20:06 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
В принципе у GunSmoker`a есть хороший набор статей о написании плагинов - для ТС - самое то Замечательный набор статей, но там описывается прнцип работы. Если не ошибаюсь там строчки не было как frame или form нарисовать на из dll RWolf , еще и Tab не работает. Спасибо что подсказади, потом бы мучался. AntonioPermskiy , у вас Tab работает в окнах и фрэймах? Знатоки!!! Я думаю проблему с табами можно решить каким то сообщением для окна или параметром. Подсказку в студию пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 11:29:35 |
|
||
|
формы и фрэймы из dll
|
|||
|---|---|---|---|
|
#18+
softwarerDarkMasterBPL - всем удобны за исключением одной маленькой штуки - они должны компилироваться одной версией во избежание. Поддержка от сторонних плагинописателей становится проблематичной. Поддержка от сторонних плагинописателей нужна в 0.01% проектов; остальные играют роль неуловимого Джо. Тем не менее, проблематичной она не становится, поскольку есть два пути её сделать, один простой, другой правильный. Может сэр приведет правильный пример кода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 11:34:46 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=38857830&tid=2041995]: |
0ms |
get settings: |
7ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
192ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 182ms |
| total: | 493ms |

| 0 / 0 |
