Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
Одно приложение Т! - на Дельфи 10.2. В него надо вставить моё приложение Е! (на Дельфи 10.3.1) /в один из табов (TTabSheet)/. Как это лучше провернуть? Из Т! в Е! передаётся параметром 1 номер ID, и Е! секунд 10 его обрабатывает. Хорошо бы задержки при открытии табы избежать, а также избежать зависания основного приложения Т!.

PS Исходные коды обоих у меня есть.
15 авг 19, 19:17    [21950452]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Vlad F
Member

Откуда:
Сообщений: 1008
Victor Cookin,

А грабить корованы они совместно не должны?
15 авг 19, 20:23    [21950488]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
Vlad F, грабить корованы лучше водиночку
15 авг 19, 20:38    [21950492]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Vlad F
Member

Откуда:
Сообщений: 1008
Victor Cookin,

А как же шайка? - разве она не повышает вероятность достижения успеха в обозначенном мероприятии?
И, между прочим, почему бы тем программам, для тех же целей, попросту не обмениваться необходимыми данными для самостоятельной их визуализации?
15 авг 19, 20:57    [21950501]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
rgreat
Member

Откуда:
Сообщений: 5454
CleintMainForm.ParentWindow:=ParentTab.Handle;
15 авг 19, 20:59    [21950502]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48673

Victor Cookin
Исходные коды обоих у меня есть.

В этом случае проще всего подключить модули одного к другому и сделать из них монолит-кирпич.

Posted via ActualForum NNTP Server 1.5

15 авг 19, 21:14    [21950506]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Vlad F
Member

Откуда:
Сообщений: 1008
Одно на все приложение, короче. Раз уж все исходники есть.))
15 авг 19, 21:22    [21950512]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
ziv-2014
Member

Откуда:
Сообщений: 468
Chrome работает с несколькими процессами. Можешь посмотреть код, как там реализовано данная задача.
15 авг 19, 21:40    [21950520]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
Dimitry Sibiryakov,

Хотелось бы ещё оставить возможность STANDALONE работы моего E!
15 авг 19, 22:00    [21950534]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
rgreat
CleintMainForm.ParentWindow:=ParentTab.Handle;

Да это понятно, там надо ещё CreateParams переписать, чтобы кнопок Min/Max/Close в заголовке не было (да и самого заголовка не было)

Сообщение было отредактировано: 16 авг 19, 21:07
15 авг 19, 22:02    [21950537]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
ziv-2014,

А что Chrome на Дельфи написан?
15 авг 19, 22:05    [21950540]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48673

Victor Cookin
Хотелось бы ещё оставить возможность STANDALONE работы моего E!

То есть собирать из одной и той же пачки модулей три разных приложения - mission
impossible для современных программистов? Ню-ню...

Posted via ActualForum NNTP Server 1.5

15 авг 19, 22:09    [21950544]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
rgreat
Member

Откуда:
Сообщений: 5454
Victor Cookin
Rgreat, Да это понятно, там надо ещё CreateParams переписать, чтобы кнопок Min/Max/Close в заголовке не было (да и самого заголовка не было)
Не надо там переписывать.

    FDockMyForm.BorderStyle:=bsNone;
    FDockMyForm.Position:=poDesigned;
    FDockMyForm.Left:=0;
    FDockMyForm.Top:=0;
    FDockMyForm.Constraints.MinHeight:=0;
    FDockMyForm.Constraints.MinWidth:=0;
    FDockMyForm.Width:=Res[1];
    FDockMyForm.Height:=Res[2];


Ну и события на ресайз таба передавай.
15 авг 19, 22:13    [21950546]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Gator
Member

Откуда: Москва
Сообщений: 14978
Я склеивал приложения через обычную панель.

Показывал здесь давным давно ещё в XP, notepad, sol.exe
может, сохранилось где-то.

Окно внешнего приложения (handle) и handle панелки связаны через её Tag и SetWindowLong легко ресайзится и прочее дельфийское.
Соответственно, для ExternalApp - SetWindowPos и проч. WinAPI.
Управление менюшками и кнопками извне ExternalApp может быть через колбеки или мессагам.
Единственно, не надо приклеиваться самому к себе
15 авг 19, 22:59    [21950565]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
ёёёёё
Member

Откуда:
Сообщений: 1409
Victor Cookin
Одно приложение Т! - на Дельфи 10.2. В него надо вставить моё приложение Е! (на Дельфи 10.3.1) /в один из табов (TTabSheet)/. Как это лучше провернуть? Из Т! в Е! передаётся параметром 1 номер ID, и Е! секунд 10 его обрабатывает. Хорошо бы задержки при открытии табы избежать, а также избежать зависания основного приложения Т!.

PS Исходные коды обоих у меня есть.

Очень просто. Второе приложение оформляешь как COM - сервер. Особо не изгаляясь, дельфийским визардом.
А в первом приложении пользуешься вторым: размещаешь в табе OLE - контейнер, в контейнер помещаешь второе. Вот и всё, работы на 5 минут. Ну ладно, на 30.

Чтобы не зависало - при запуске первого приложения второе запускать параллельно.
Да, оле - контейнер не всегда хорош в мелочах, но обычно его достаточно.
16 авг 19, 00:13    [21950612]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60321
Victor Cookin
В него надо вставить моё приложение Е! (на Дельфи 10.3.1) /в один из табов (TTabSheet)/. Как это лучше провернуть? Из Т! в Е! передаётся параметром 1 номер ID, и Е! секунд 10 его обрабатывает. Хорошо бы задержки при открытии табы избежать, а также избежать зависания основного приложения Т!.
А это нужно для вновь создаваемого процесса или для уже работающих тоже?
16 авг 19, 21:13    [21951434]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
ziv-2014
Member

Откуда:
Сообщений: 468
Victor Cookin
ziv-2014,

А что Chrome на Дельфи написан?

А какая разница, api оно и в windows api.
16 авг 19, 21:24    [21951441]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
Рустам, для вновь создаваемого. Дело в том, что включение нового приложения в зоопарк имеющихся - длительный процесс. Потому ТЗ было - включить в состав имеющегося. Разрабатывается и тестируется оно, однако, как standalone
19 авг 19, 22:59    [21952970]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60321
Victor Cookin> Рустам, для вновь создаваемого.

Тогда с чем именно возникли проблемы?
Потоки, "докинг" окна, еще что-то?

Posted via ActualForum NNTP Server 1.5

22 авг 19, 16:19    [21955695]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
Гаджимурадов Рустам,

Проблем никаких не возникло. Советуюсь просто.
С одной стороны хочется приложения разделить, ведь если просто "засунуть"(мою главную форму в их TTabSheet), то есть риск что полезут в мои модули и что-то сломают.

Так что думаю насчёт bpl . Но вот с чем столкнулся - bpl подлинковывает другие required bpl, короче, если где-то (3-rd party package source code) я что-то поменял, то мой собственный bpl этого не видит, видимо надо пересобрать пакеты
22 авг 19, 19:32    [21955909]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
ziv-2014
Member

Откуда:
Сообщений: 468
Victor Cookin
Гаджимурадов Рустам,

Проблем никаких не возникло. Советуюсь просто.
С одной стороны хочется приложения разделить, ведь если просто "засунуть"(мою главную форму в их TTabSheet), то есть риск что полезут в мои модули и что-то сломают.

Так что думаю насчёт bpl . Но вот с чем столкнулся - bpl подлинковывает другие required bpl, короче, если где-то (3-rd party package source code) я что-то поменял, то мой собственный bpl этого не видит, видимо надо пересобрать пакеты

Создай свой bpl с нужным тебе rtl.
22 авг 19, 19:42    [21955923]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Vlad F
Member

Откуда:
Сообщений: 1008
Victor Cookin,

Если идти именно этим путем, то можно оформить отчуждаемый функционал со всеми необходимыми формами в виде обычной DLL с общим менеджером памяти (SimpleShareMem). Тоже не без гимора, конечно, ибо требует также передачи в нее головного экземпляра Application и т.д., но в принципе все работает, я даже корректны к БД туда передаю.
22 авг 19, 20:11    [21955948]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Gator
Member

Откуда: Москва
Сообщений: 14978
Victor Cookin
риск что полезут в мои модули и что-то сломают.

Так запрети править, лицензируй. Повесь табличку "Работает - не трожь!", "Не влезай! Убьёт"
Victor Cookin
если где-то (3-rd party package source code) я что-то поменял, то мой собственный bpl этого не видит, видимо надо пересобрать пакеты
. Конечно надо. BPL скомпилированная давно об изменениях не знает. И новую сборку ещё надо будет разослать заинтересованным... Которые тоже не знают, кого там жареный петух клюнул...
22 авг 19, 21:45    [21956034]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
Всё сделал, всё нравится. Даже в своём приложении текстовый редактор - динамически загружаемый пакет с экспортируемыми функциями:

exports Show;
exports CloseForm;
exports Clear;
exports Add;
exports GetStrings;

Но к сожалению Основной проект тогда тоже должен быть скомпилирован с Runtime packages. А этого никто из заказчиков не хочет.
Надо переделывать теперь в DLL.
5 сен 19, 23:17    [21964989]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Vlad F
Member

Откуда:
Сообщений: 1008
Victor Cookin,

Все перечисленные издержки выбранного способа были хорошо известны с самого начала.
Странно, что ты счёл необходимым таки хлопнуть этими граблями по лбу.
6 сен 19, 18:46    [21965605]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Delphi Ответить