Показать сообщение отдельно
  #2  
Старый 02.12.2009, 08:38
Аватар для glaZZ
glaZZ glaZZ вне форума
Прохожий
 
Регистрация: 18.11.2008
Сообщения: 26
Репутация: 10
По умолчанию

Я бы наверное сделал следующим образом (обозначу только общую логику):
1) Основная программа при старте ищет плагины/dll, поочередно их подключает и при подключении вызывает какую-либо единую для всех плагинов функцию, которая собственно и будет указывать основной форме, что добавлять и куда. Для реализации этого глянь мануалы по работе с длл и создании элементов управления в процессе выполнения программы.
2) Ну собственно говоря при создании кнопки необходимо ей на событие onclick назначить вызов определенной функции из плагина. Как реализовать не скажу - нет делфи под рукой.
3) Самое простое на мой взгляд - не связывать добавление кнопок и отображение экземпляра дочерней формы. Т.е. при старте программы плагин подключается и сразу добавляются кнопки, а потом уже при необходимости создаются экземпляры дочерних форм. Иначе можно перед добавлением кнопок проверять их наличие, или же сразу после добавления записывать определенное значение в файл настроек (скажем в обычный ini) и при подключении плагина проверять это значение. А чтобы кнопки управляли именно выбранной формой, достаточно просто получить имя формы, которая находится в фокусе.
4) Ну опять таки можно проверять, какое окно получило фокус, а какое потеряло. Если фокус получило окно, не связанное с плагином, просто ставить кнопкам свойство enabled в false.
5) Опять таки можно использовать файл настроек (или реестр) и при старте программы проверять значение данной настройки.

P.S.: если что-то не так понял, прошу строго не судить скажу только то, что все выше перечисленное можно реализовать и не одним способом.
Ответить с цитированием