Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

плагины


bagos ©   (2008-01-24 21:54:00) 

Мастера думаю присобачить к проге поддержку плагинов(dll с формами),появился вопрос, плагины загружать при создании формы или загружать только когда надо нужный плагин, я так понимаю если загрузить сразу все то много памяти пожрется ведь каждая dll ~1.5-2.5 мега.
что посоветуете?


Amoeba   (2008-01-25 21:59:00) [1]

Статьи о плагинах:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=468
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=512
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=274


MetalFan   (2008-01-25 18:25:00) [2]

неплохо бы и экземпляру Application в dll установить Handle такой же, как и в приложении...


easy   (2008-01-25 18:11:00) [3]

http://narod.yandex.ru/cgi-bin/yandsearch?user=delphiworld&text=plugin&where=2


bagos   (2008-01-25 18:03:00) [4]

сам ступил:

 Params.ExStyle   := Params.ExStyle or WS_EX_TOOLWINDOW;

решило проблему:)
всем спасибо за ответы!


bagos   (2008-01-25 18:01:00) [5]

WS_EX_TOOLWINDOW вместо WS_EX_APPWINDOW;


bagos   (2008-01-25 18:00:00) [6]


> передавай в плагины Application.Handle из хоста, в плагинных
> формах в CreateParams используй его как WndParent

я правильно понял?
в dll добавляем
...
protected
    procedure CreateParams(var Params: TCreateParams); override;
...
procedure Tdll1.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle   := Params.ExStyle or WS_EX_APPWINDOW;
  Params.WndParent := GetDesktopWindow;
end;

теперь осталось передать в dll Application.Handle и я не знаю как :(


DiamondShark   (2008-01-25 16:05:00) [7]


> bagos   (25.01.08 14:36) [10]
> созрела новая проблема с плагинами:

Тебе советовали плюнуть. Не послушался.


> у меня есть главная форма,в нее загружаются плагины(dll
> содержащие формы).
> плагинов много, и у всех кнопки на панели задач :(

передавай в плагины Application.Handle из хоста, в плагинных формах в CreateParams используй его как WndParent

Ну и готовься к новому урожаю. Скоро созреет ;)


bagos   (2008-01-25 15:03:00) [8]

тема SetWindowLong и WS_EX_TOOLWINDOW не прокатила для плагина


Сергей М.   (2008-01-25 14:45:00) [9]


> главная форма,в нее загружаются плагины(dll


Белиберда.


> не знаю че делать :( подсобите


Начни с азов.
см. выше про "белиберду".


{RASkov}   (2008-01-25 14:41:00) [10]

> [10] bagos   (25.01.08 14:36)
> уже и не знаю че делать :( подсобите

вариант: Стиль окну выставь SetWindowLong и WS_EX_TOOLWINDOW


bagos   (2008-01-25 14:36:00) [11]

созрела новая проблема с плагинами:

у меня есть главная форма,в нее загружаются плагины(dll содержащие формы).
плагинов много, и у всех кнопки на панели задач :(
пробовал
showwindow(handle,sw_hide)

не помогло, хайдится и кнопка и сама форма плагина.
уже и не знаю че делать :( подсобите


Сергей М.   (2008-01-25 11:40:00) [12]


> агружается форма по обработчику события


Событию какогообъекта ?


bagos   (2008-01-25 11:00:00) [13]

ночью голова плохо думает, с устра встал  сразу мысля пришла :)

if xz then
begin
 search.Close;
 xz := false;
 Exit;
end;

if FindWindow(nil,'search') <> 0 then
begin
 xz := true;
 search.Show;
end;


bagos   (2008-01-25 02:44:00) [14]

я запоролся, не знаю как сделать :(
плагины загружаются нормально вроде как все ок!
в dll загружается форма по обработчику события

//dll
procedure Tsearch.ShowMe(Sender: TObject);
begin
 Show;
end;


собственно хочу сделать чтобы при повторном вызове shomwe была проверка что если форма загружена то ее надо закрыть,а если нет то загрузить. что то типо:
//dll
procedure Tsearch.ShowMe(Sender: TObject);
begin
 if findwindow(nil, 'search') <> 0 then
  PostMessage(FindWindow(Nil, 'search'), WM_close, 0, 0)
  else
 Show;
end;


в чем дело не пойму :( не работает и все тут...


bagos   (2008-01-24 23:32:00) [15]

{RASkov}, спасибо!
всегда поднимаешь мне тут настроение!!! :)
воображалку уже включил, пока все путем идет :)))))


{RASkov}   (2008-01-24 23:25:00) [16]

> [4] bagos   (24.01.08 23:12)
> форум для начинающих

"начинающие" с плагинов не начинают :)
А если ты решил делать программу с поддержкой плугинов, то ты уже не "начинающий", а имеешь кое-какой опыт разработки приложений...
Тогда зачем называть себя начинающим???
Если по сабжу... дабы не офтопить, то ....не знаю :( я плугинами не занимался(
Впрочем.... включи воображение.... смотря что за плагин.... какова его работа(задача).... посмотри в эту сторону, посмотри в ту..... пораскинь мозгом.... только не обляпой ни кого) и сделай наконец вывод - как же должен грузится конкретный плугин....


bagos   (2008-01-24 23:12:00) [17]


> Leonid Troyanovsky ©  

Плюнь.


от вас другого совета и не дождешься, смысл писать тогда :)
форум для начинающих)))


Leonid Troyanovsky   (2008-01-24 22:23:00) [18]


> bagos   (24.01.08 21:54)  

> что посоветуете?

Плюнь.

--
Regards, LVT.


bagos   (2008-01-24 22:03:00) [19]

там сособо то и методов нету, разве что только инициализация. все остальное делается в самом плагине(форме)


@!!ex   (2008-01-24 21:59:00) [20]

загружать при обращении к методами описанным в dll


Наверх

Титульная страница Поиск, карта сайта Написать письмо