Vermutlich habe ich meine Situation zu ungenau beschrieben. Es geht einfach um alle Procedures und Functions und ebenso alle Variablen, die in einer Notifier-Ableitung jeweils „Public“ deklariert sind, und auf die ich von anderen Teilen meines Packages, also aus z.B. auch anderen Notifiers (die in anderen Units deklariert sind) zugreifen können möchte.
Beispiel: Ein von mir deklarierter Notifier sieht ungefähr so aus
Delphi-Quellcode:
unit readEditorCode_Unit;
interface
uses ToolsAPI,
Winapi.Windows,
Winapi.Messages, Registry,
vcl.ExtCtrls,
vcl.Controls, system.Rtti,
TIDENotifier =
class(TNotifierObject, IOTANotifier, IOTAIDENotifier)
Timer1 : TTimer;
procedure Timer1Timer(Sender: TObject);
private
...
public
// IOTAIDENotifier
VarXYZ : integer;
// <--------
procedure FileNotification(NotifyCode: TOTAFileNotification;
const FileName:
string;
var Cancel: Boolean);
procedure BeforeCompile(
const Project: IOTAProject;
var Cancel: Boolean);
overload;
procedure AfterCompile(Succeeded: Boolean);
overload;
constructor Create;
destructor Destroy;
override;
procedure ProcABC;
// <--------
end;
{ of "TIDENotifier = class() }
var
NotifierIndex: Integer = -1;
procedure Register;
implementation
uses vcl.Dialogs, system.SysUtils, shellapi, EditServiceNotifer;
procedure Register;
var
Services: IOTAServices;
begin
if not Supports(BorlandIDEServices, IOTAServices, Services)
then Exit;
NotifierIndex := Services.AddNotifier(TIDENotifier.Create);
end;
usw. usf..
Wäre dieses TIDENotifier jetzt eine TForm in einem normalen Delphi-Programm, dann würde in der obigen Var-Deklaration direkt unter der TIDENotifier-Deklaration auch noch sowas stehen wie
var
IdeNotifier : TIDENotifier;
NotifierIndex: Integer = -1;
und man könnte aus anderen Units leicht auf diese obige Public-Var "VarXYZ" zugreifen, ala
andereVar :=
IdeNotifier.VarXYZ;
oder die Public-Proc "ProcABC" callen per
IdeNotifier.ProcABC;
Diese Procs müssen jetzt noch nichtmal irgendwelche normalen Event-Handler sein, die angesprungen werden, wenn bestimmte Ereignisse eingetreten sind. Sondern das sollen auch ganz normale Procs sein dürfen, die einfach mal aus irgendeinem anderen Notifier callbar sein sollen.
Was aber aufgrund der in IOTA-Packages fehlenden <IdeNotifer : TIDENotifer> -Zeile da jetzt leider nicht geht.
Oder wie geht das doch?