|
Вопрос # 5 251/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Есть основная форма и длл в которой находится другая форма. основная форма вызывает форму из длл, на этой форме делаются какие-то действия. потом мне надо оповестить основную форму о результате действий на форме из длл и дать команду на закрытие формы длл. Как сделать это оповещение? Как я понимаю callback через property тут реализовать не удастся. Нужно что-то аналогичное.
 |
Вопрос задал: AlexMPEI (статус: 1-ый класс)
Вопрос отправлен: 4 мая 2011, 14:17
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 13; последнее сообщение — 4 мая 2011, 16:33; участников в обсуждении: 4.
|
min@y™ (статус: Доктор наук), 4 мая 2011, 14:28 [#1]:
Цитата (AlexMPEI):
Как я понимаю callback через property тут реализовать не удастся. Нужно что-то аналогичное.
А просто callback чем тебя не устраивает? При создании DLL-формы передавай ей указатель на callback-функцию оповещения. При завершении работы DLL-формы она будет эту функцию вызывать и передавать нужные данные. Всё проще, чем кажется.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 4 мая 2011, 14:29 [#2]:
Главная ошибка - форма в dll.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 4 мая 2011, 14:39 [#3]:
Цитата (Вадим К):
Главная ошибка - форма в dll.
Ну, возможно, такая задача.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
DNK (статус: Студент), 4 мая 2011, 14:48 [#4]:
А чем "callback через property" не можется? Хотелось бы знать.
"Digital Networked Knight"
|
|
Вадим К (статус: Академик), 4 мая 2011, 14:58 [#5]:
Цитата (min@y™):
Главная ошибка - форма в dll.
Ну, возможно, такая задача.
я уже много раз писал - подобная вещь - проблема дизайна. вначале вроде все работает. но потом тронешь - и посыпалось - почему то две кнопки в панели задач открываются или сворачиваешь главную формы, а форма с длл остается. Если уже и нужно, то используем bpl
Галочка "подтверждения прочтения" - вселенское зло.
|
|
AlexMPEI (статус: 1-ый класс), 4 мая 2011, 15:07 [#6]:
min@y™:
можно простой пример реализации простого callbackа?
|
|
AlexMPEI (статус: 1-ый класс), 4 мая 2011, 15:12 [#7]:
DNK:
чтобы сделать callback через property форма должна знать что в dll есть класс, иметь к нему доступ и т.п. У меня dll предоставляет только методы показать, убрать и еще нужен обратный вызов с результатом работы.
как-то пробовал сделать класс в dll через interface, в итоге все у меня рушилось через некоторое время по непонятным причинам и работало нестабильно. отказался от подобных экспериментов.
|
|
AlexMPEI (статус: 1-ый класс), 4 мая 2011, 15:16 [#8]:
Вадим К:
У меня в dll должны храниться диалоги и просто окошки для показа. Весь функционал - открой, закрой, получи результат что нажали кнопку.
Не думаю что тут могут быть какие-то опасности.
|
|
min@y™ (статус: Доктор наук), 4 мая 2011, 15:31 [#9]:
Цитата (AlexMPEI):
можно простой пример реализации простого callbackа?
Да некогда мне примеры писать, работы дохрена. Если правильно составишь запрос гуглу, он тебе 100500 мильёнов ссылок на статьи выдаст. И читай, читай, читай.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 4 мая 2011, 15:37 [#10]:
Цитата (AlexMPEI):
Не думаю что тут могут быть какие-то опасности.
Будут. Самое первое, что бы хоть как то их минимизировать, нужно подключить sharemem. Иначе у длл и приложения будет свой менеджер памяти - а это практически всегда приводит к непонятным багам. Во вторых, будьте готовы к тому, что если получить ссылку на форму с длл, а потом например в основном приложении написать if formdll is TForm then будет неверным
Галочка "подтверждения прочтения" - вселенское зло.
|
|
AlexMPEI (статус: 1-ый класс), 4 мая 2011, 15:55 [#11]:
Вадим К:
про шаремем - понятно
про ссылки на форму - мое основное приложение вообще не намерено знать что в длл есть формы. или я чего-то не понимаю
|
|
AlexMPEI (статус: 1-ый класс), 4 мая 2011, 16:14 [#12]:
а если использовать месседжи для передачи сообщений от окна окну? мне кажется это довольно простой способ будет.
|
|
Вадим К (статус: Академик), 4 мая 2011, 16:33 [#13]:
я привел некоторые возможные баги. их на самом то деле значительно больше.
Но в целом - пробуйте - лучше один раз потратить кучу времени и понять, что так писать плохо, чем я буду тут рассказывать и разубеждать.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|