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

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

Плагин


KSV ©   (2003-02-24 21:12:00) 

Как сделать плагин в dll? В плагин передается элемент управления (например панель расположенная на основной форме), а плагин ставит на эту панель свои компоненты. Возможно ли такое сделать?


Gandalf   (2004-02-29 11:34:00) [1]

Memory Mapped Files например

Тема уходит далеко за рамки KOL!


KisaNetik   (2004-02-29 02:39:00) [2]

Вопрос...
А как можно махатся с плагином данными во время выполнения самого плагина? Или же к примеру выполнять в основной программе что-то по нажатию кнопочки в плагине и вернуть фокус вновь плагину???


ывавыа   (2003-07-22 12:11:00) [3]

Удалено модератором
Примечание: Грубая лексика


SPeller   (2003-03-05 03:10:00) [4]

шли на мыло свой код, посмотрим.


KSV   (2003-03-04 19:41:00) [5]

Извини, ошибся!
Вместо
but:=newform(A,'ser');

надо
but:=newbutton(A,'ser');


SPeller   (2003-03-04 06:09:00) [6]

Из приведённого кода следует что ты создаёшь форму на панели. А вот кода когда ты делаешь контрол на форме здесь нет. Отсюда и выводы.


KSV   (2003-03-03 20:20:00) [7]

Форму я создавал не на панели, а отдельно. Тогда все работает нормально. Но если пытаться создать элемент на форме программы, то ошибка.


SPeller   (2003-03-03 01:25:00) [8]


> Нет не из-за этого
Проверял?
А то что создаёшь форму на панельке ничего?


KSV   (2003-03-02 21:00:00) [9]

Нет не из-за этого. Если внутри плугина создавать отдельную форму, то все работает без ошибок. Но если попытаться на чужой форме, то возникает ошибка. Возможно здесь надо делать одинаковыми Applet в основной программе и в плагине. Но я так пробовал тоже выдается ошибка.


SPeller   (2003-03-02 16:10:00) [10]

Может быть из-за несоответствия

type TPlugCreate=function(value:PControl):byte;stdcall;

и

procedure PlugCreate(A:PControl);stdcall;

??


KSV     (2003-03-02 09:19:00) [11]

//Основная программа
type TPlugCreate=function(value:PControl):byte;stdcall;

var Panel:PControl; //эта панель создается на форме

procedure BtnPlugCreate(Sender:PControl; var  Mouse:TMouseEventData);
var FPointer:TFarProc;
   PlugCreate:TPlugCreate;
   i:byte;
   HInst:THandle;
begin
 i:={Sender.Tag}1;
 try
   HInst:=LoadLibrary(PChar(ProgramDir+'Plugins\'+'my.dll'));
   if HInst>0 then begin
     FPointer:=GetProcAddress(HInst,PChar('PlugCreate'));
     if FPointer<>nil
       then begin
         PlugCreate:=TPlugCreate(FPointer);
         PlugCreate(Panel);
       end;
   end;
 finally
 end;
end;


//Библиотека DLL
var but:PControl;

procedure PlugCreate(A:PControl);stdcall;
var P:PControl;
begin
 Messagebox(0,'1','1',mb_ok);
 but:=newform(A,'ser');
 but.Parent:=A;
 but.Show;
end;

Процедура нормально вызывается, появляется MessageBox, но
потом происходит ошибка.

Except EAccessViolation in module MY.DLL at 000043A4.
Access violation at address 011843A4 in module 'MY.DLL'. Read of address
FFFFFFFF.

А возможно ли вообще передавать только Handle панели, расположенной на форме, и создавать элементы управления из DLL на ней, чтобы не привязываться к определенному языку программирования?


SPeller   (2003-02-26 10:00:00) [12]

Приведи код, поглядим что у тебя не получается.


KSV   (2003-02-25 20:12:00) [13]

Может кто пример даст? Я пробовал в процедуре вызова конструктора, расположенного в dll, передавать Panel, расположенную на основной форме, но при попытке создания VCL на этой панели программа выдает ошибку и завершается.
createvcl(Panel1);


SPeller   (2003-02-25 15:16:00) [14]


> Юрец   (25.02.03 12:10)
> Слушайте, раз уш про plugins'ы, то как (вообще) осуществить
> (или осуществляется) поддержка Plugin?
> Заранее СПАСИБО!!!

Довольно просто: загружаем dll через LoadLibrary, ищем адрес нужной нам функции и вызываем её. Вот и весь процесс. Ну и потом выгружаем библиотеку.


Юрец   (2003-02-25 12:10:00) [15]

Слушайте, раз уш про plugins'ы, то как (вообще) осуществить (или осуществляется) поддержка Plugin?
Заранее СПАСИБО!!!


Bartov   (2003-02-25 01:23:00) [16]

Эксперементируй, нет ничего невозможного.


Наверх

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