Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.21;
Скачать: CL | DM;

Вниз

Вопрос про плагины (компонент TJvPlugin)   Найти похожие ветки 

 
NeyroSpace ©   (2006-11-27 15:14) [0]

Имеем демо-код небольшого плагина в виде DLL.
{---SamplePluginOne.dpr---}
library SamplePluginOne;

uses
 ShareMem,
 SamplePluginOneU in "SamplePluginOneU.pas" {SampleUILPlugin: TJvPlugin};

exports
 RegisterPlugin;

begin

end.

{---SamplePluginOneU.pas---}
unit SamplePluginOneU;

interface

uses
 Windows,
 Messages,
 SysUtils,
 Classes,
 Dialogs,
 Forms,
 JvPlugin;

type
 TSampleUILPlugin = class(TJvPlugin)
   procedure uilPlugin1Commands0Execute(Sender: TObject);
   procedure uilPlugin1Commands1Execute(Sender: TObject);
   procedure uilPlugin1Commands2Execute(Sender: TObject);
   procedure uilPlugin1PluginMessage(Sender: TObject; APluginMessage: Integer; AMessageText: string);
   procedure uilPlugin1Configure(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

function RegisterPlugin: TSampleUILPlugin; stdcall;

implementation

{$R *.DFM}

// IMPORTANT NOTE: If you change the name of the Plugin container,
// you must set the type below to the same type. (Delphi changes
// the declaration, but not the procedure itself. Both the return
// type and the type created must be the same as the declared type above.

function RegisterPlugin: TSampleUILPlugin;
begin
 Result := TSampleUILPlugin.Create(nil);
end;

procedure TSampleUILPlugin.uilPlugin1Commands0Execute(Sender: TObject);
begin
 ShowMessage("Command One clicked");
end;

procedure TSampleUILPlugin.uilPlugin1Commands1Execute(Sender: TObject);
begin
 ShowMessage("Command Two clicked");
end;

procedure TSampleUILPlugin.uilPlugin1Commands2Execute(Sender: TObject);
begin
 ShowMessage("Command Three clicked");
end;

procedure TSampleUILPlugin.uilPlugin1PluginMessage(Sender: TObject;
 APluginMessage: Integer; AMessageText: string);
begin
 ShowMessage(Format("Plugin Message number %d received. MessageText: %s", [APluginMessage, AMessageText]));
end;

procedure TSampleUILPlugin.uilPlugin1Configure(Sender: TObject);
begin
 ShowMessage("You could put a configuration dialog here, if your plugin requires one.");
end;

end.

//-------
Собственно говоря DLL-плагин экспортирует одну ф-цию function RegisterPlugin: TSampleUILPlugin; stdcall;
т.е. при вызове этой ф-ции главная программа получает указатель на класс плагина. Я так понимаю написать плагин с таким классом на VC++ нельзя? Ведь в VC++ классы имеют совершенно дугую внутреннюю структуру? Или я ошибаюсь?


 
Сергей М. ©   (2006-11-27 16:14) [1]


> Или я ошибаюсь?


Нет, не ошибаешься.



Страницы: 1 вся ветка

Текущий архив: 2007.01.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.062 c
15-1167591950
Piroxyline
2006-12-31 22:05
2007.01.21
С наступившим!


15-1166707484
Ega23
2006-12-21 16:24
2007.01.21
О пользе Архангельского :)))


3-1162542442
Монг
2006-11-03 11:27
2007.01.21
Вопрос по компоненту cxGrid


15-1167851365
lookin
2007-01-03 22:09
2007.01.21
Молодежная сборная по хоккею


2-1167226205
Mickey74
2006-12-27 16:30
2007.01.21
Какие программы используют мою DLL в данный момент времени?