Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2008, 19:32   #1
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию взаимодействие приложения и dll

У меня в главном приложении - есть DBGrid, в котором отображаются данные из бд baza.mdb. На главной форме есть кнопка Вызов - которая отображает форму из dll.
Также на главной форме есть еще кнопки 2: удалить и добавить. Они добавляют или удаляют записи в бд.

В форме из dll - есть тоже DBGrid и две кнопки удалить и добавить.
Так вот вопрос: как сделать так чтобы в обоих этих DBGrid одновременно отображалась информация? Т.е. - я открыл форму из dll и удалил в ней запись - тогда информация также мгновенно должна обновиться в DBGrid на главной форме. И наоборот - я открыл форму в dll и удаляю запись через главную форму - тут же должна обновится информация и в открытой форме dll в DBGrid...

Прикрепляю сделанные проекты.
Mainn.dpr - проект главного приложения
libr.dpr - проект dll
Unit1.pas- модуль формы dll

Примечание: ADOConnection.Caonnected и ADOTale1.Active в проекте в инспекторе объектов поставлены в значение false. Они активизируются при событии form1.Activate.
Примеры снабжены комментариями почти к каждой процедуре
Вложения
Тип файла: rar dll_parametrs ADO.rar (27.2 Кб, 17 просмотров)
Изо всей благодати
В руках крепко сжатых
Я донесу только капли

Последний раз редактировалось Roof; 07.12.2008 в 19:37.
Roof вне форума Ответить с цитированием
Старый 07.12.2008, 23:01   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

1. известить главную форму (DLL) о том что произошли изменения
postmessage(wm_user+x,)
2. следить не было ли изменений. ontimer
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 07.12.2008 в 23:03.
evg_m вне форума Ответить с цитированием
Старый 12.12.2008, 23:16   #3
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Вобщем сообщениями я не очень хочу тут работать.
У меня есть пример - передача одной переменной из dll в главное приложение. В примере можно вызвать форму из dll и в dll нажать кнопку Button3 - тогда И В DLL И В ГЛАВНОМ ПРИЛОЖЕНИИ ИЗМЕНИТСЯ ОДНА ПЕРЕМЕННАЯ ОДНОВРЕМЕННО. Это отображается на обеих формах.

Так вот не могу додуматься - как мне передать не одну переменную, а еще и обновления в DBGrid?? Предполагаю, что нужно передавать ADOTable1.Close и ADOTable1.Open. Прошу рассмотреть пример и, если можно, объяснить как передать вместе с одной переменной еще и обновления DBGrid.

Mainn.dpr - проект главного приложения
libr.dpr - проект dll
Unit1.pas- модуль формы dll
Вложения
Тип файла: rar ADO dll_parametrs.rar (28.7 Кб, 11 просмотров)
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 13.12.2008, 07:05   #4
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Передай в dll указатели на процедуры. Сделай так:
Объяви процедуру после к.с. implementation
Код:
procedure dbOpen(const value: boolean); stdCall;
begin
   if value then
      ADOTable1.Open
   else
      ADOTable1.Close;
end;
и передовай её указатели в DLL. Я особо в базах данных не секу. поэтому говрю суть...

Потом, когда нажимаешь на кнопку "Вызов", такой код:
ShowForm(Application.Handle, Self.Handle, @dbOpen); Там выше и в DLL исправь описание этой процедуры. В DLL в объяви глобальную переменную
Код:
var
...
dbOpen: procedure(const value: boolean); stdCall;
...
Ну и там дольше, где надо тебе, по вызову процедуры ShowForm в dll напиши: @dbOpen := procP;

procedure ShowForm(Appl, Form: THandle; procP: pointer);

по мере надобности просто будешь вызывать из dll ShowForm с нужным тебе параметром.

p.s. Про stdCall не забудь.
Altera вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взаимодействие DLL и программы Никки Общие вопросы Delphi 11 07.08.2008 21:22
Взаимодействие flash и C#? mrakaziabra Общие вопросы .NET 3 16.07.2008 07:16
взаимодействие с QIP Toxa Общие вопросы Delphi 5 20.06.2008 19:39
Делаю сайты, пишу маленькие/большие скрипты. Пишу веб-приложения и приложения под Windows. SkyM@n Фриланс 3 29.12.2007 16:21
Запуск приложения из DLL Hollander Общие вопросы Delphi 2 17.05.2007 20:04