1 |
|
---|
2 | {ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
---|
3 | º º
|
---|
4 | º Sibyl Portable Component Classes º
|
---|
5 | º º
|
---|
6 | º Copyright (C) 1995,97 SpeedSoft Germany, All rights reserved. º
|
---|
7 | º º
|
---|
8 | ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍŒ}
|
---|
9 |
|
---|
10 | Unit ToolsAPI;
|
---|
11 |
|
---|
12 | Interface
|
---|
13 |
|
---|
14 | Uses Classes,Forms,Graphics,editors;
|
---|
15 |
|
---|
16 | Type
|
---|
17 | //Tools Service API. the Reference For This Class Is ToolServices And Is created by the SP/2
|
---|
18 | //IDE ON Library Initialization
|
---|
19 | TCreateModuleFlag = (cmfAddToProject,cmfShowSource,cmfShowForm,
|
---|
20 | cmfUnNamed,cmfNewUnit,cmfNewForm,cmfMainForm,cmfMarkModified,
|
---|
21 | cmfNewFile,cmfExisting);
|
---|
22 |
|
---|
23 | TCreateModuleFlags = Set Of TCreateModuleFlag;
|
---|
24 |
|
---|
25 | TProjectEnumProc = Function(Param: Pointer;Const FileName, UnitName,
|
---|
26 | FormName:String):Boolean;
|
---|
27 |
|
---|
28 | TFileNotification = (fnFileOpening, fnFileOpened, fnFileClosing,
|
---|
29 | fnProjectOpening, fnProjectOpened, fnProjectClosing, fnAddedToProject,
|
---|
30 | fnRemovedFromProject, fnDefaultDesktopLoad, fnDefaultDesktopSave,
|
---|
31 | fnProjectDesktopLoad, fnProjectDesktopSave, fnProjectSaved, fnFileSaved);
|
---|
32 |
|
---|
33 | TIMainMenuIntf = Class;
|
---|
34 |
|
---|
35 | TIAddInNotifier = Class
|
---|
36 | Procedure FileNotification(NotifyCode: TFileNotification;
|
---|
37 | Const FileName:String;Var Cancel:Boolean); Virtual;Abstract;
|
---|
38 | End;
|
---|
39 |
|
---|
40 | TIModuleInterface=Class;
|
---|
41 |
|
---|
42 | TIToolServices = Class
|
---|
43 | //Opens A New project. If PrjName Is Empty, Create A New, Empty project.
|
---|
44 | Function OpenProject(Const PrjName:String):Boolean; Virtual;Abstract;
|
---|
45 | //Extended Version Of OpenProject
|
---|
46 | Function OpenProjectEx(Const PrjName:String;VisualProject,CreateNew:Boolean):Boolean;Virtual;Abstract;
|
---|
47 | //Close project And return True ON Success
|
---|
48 | Function CloseProject:Boolean; Virtual;Abstract;
|
---|
49 | //determines If A named project can be opened, no Load
|
---|
50 | Function OpenProjectInfo(Const PrjName:String):Boolean; Virtual;Abstract;
|
---|
51 | //save Current project And return True ON Success
|
---|
52 | Function SaveProject:Boolean; Virtual;Abstract;
|
---|
53 | //returns True If specified File Is Open Or can be Loaded
|
---|
54 | Function OpenFile(Const FileName:String):Boolean; Virtual;Abstract;
|
---|
55 | //Closes Open Editor File, If it Is Not Open return also True
|
---|
56 | Function CloseFile(Const FileName:String):Boolean; Virtual;Abstract;
|
---|
57 | //Saves the specified files, If it Is Not Open return also True
|
---|
58 | Function SaveFile(Const FileName:String):Boolean; Virtual;Abstract;
|
---|
59 | //creates A New Module
|
---|
60 | Function CreateModule(Const ModuleName:String;
|
---|
61 | Source, Form: TMemoryStream;
|
---|
62 | CreateFlags: TCreateModuleFlags):Boolean; Virtual;Abstract;
|
---|
63 | //Extended Version Of CreateModule
|
---|
64 | Function CreateModuleEx(Const ModuleName, FormName, AncestorClass:String;
|
---|
65 | Source, Form: TMemoryStream;
|
---|
66 | CreateFlags: TCreateModuleFlags):TIModuleInterface; Virtual;Abstract;
|
---|
67 | //returns IDE Application Form
|
---|
68 | Function GetParentForm:TForm; Virtual;Abstract;
|
---|
69 | //returns Current project Name
|
---|
70 | Function GetProjectName:String; Virtual;Abstract;
|
---|
71 | //returns primary File Of project
|
---|
72 | Function GetPrimaryFile:String;Virtual;Abstract;
|
---|
73 | //returns Count Of units belonging To the Current project
|
---|
74 | Function GetUnitCount:LongInt; Virtual;Abstract;
|
---|
75 | //returns full Name Of project Unit With specified Index
|
---|
76 | Function GetUnitName(Index:LongInt):String; Virtual;Abstract;
|
---|
77 | //calls EnumProc For each Unit In the project
|
---|
78 | Function EnumProjectUnits(EnumProc: TProjectEnumProc;Param: Pointer):Boolean; Virtual;Abstract;
|
---|
79 | //return All files that belong To the Current project
|
---|
80 | Procedure GetProjectFiles(AStrings:TStrings);Virtual;Abstract;
|
---|
81 | //return Number Of available Forms In Current project
|
---|
82 | Function GetFormCount:LongInt; Virtual;Abstract;
|
---|
83 | //Get Name Of Form With specified Index
|
---|
84 | Function GetFormName(Index:LongInt):String; Virtual;Abstract;
|
---|
85 | //Get full Name Of Current File Or Form-Unit-File, Empty String If no File Is Active
|
---|
86 | Function GetCurrentFile:String; Virtual;Abstract;
|
---|
87 | //returns True If specified File Is Open
|
---|
88 | Function IsFileOpen(Const FileName:String):Boolean; Virtual;Abstract;
|
---|
89 | //Generate New Unit Name And File Name
|
---|
90 | Function GetNewModuleName(Var UnitIdent,FileName:String):Boolean; Virtual;Abstract;
|
---|
91 | //Get Count Of Currently installed Component modules (units)
|
---|
92 | Function GetModuleCount:LongInt; Virtual;Abstract;
|
---|
93 | //Get Component Unit Name With specified Index
|
---|
94 | Function GetModuleName(Index:LongInt):String; Virtual;Abstract;
|
---|
95 | //Get Component Count Of Component Unit With specified Index
|
---|
96 | Function GetComponentCount(Index:LongInt):LongInt; Virtual;Abstract;
|
---|
97 | //Get Component Name from Component Unit With specified Index
|
---|
98 | Function GetComponentName(ModIndex,CompIndex:LongInt):String; Virtual;Abstract;
|
---|
99 | //Get Interface For A File Loaded into the Editor
|
---|
100 | Function GetModuleInterface(Const FileName:String):TIModuleInterface; Virtual;Abstract;
|
---|
101 | //Get Interface For A Form And its associated Editor File
|
---|
102 | Function GetFormModuleInterface(Const FormName:String):TIModuleInterface; Virtual;Abstract;
|
---|
103 | //gets IDE main Menu
|
---|
104 | Function GetMainMenu:TIMainMenuIntf; Virtual;Abstract;
|
---|
105 | //Adds A Notification Proc
|
---|
106 | //gets main Menu Handle - Use With care
|
---|
107 | Function GetMainMenuHandle:TMenu;Virtual;Abstract;
|
---|
108 | Function AddNotifier(AddInNotifier:TIAddInNotifier):Boolean; Virtual;Abstract;
|
---|
109 | //Remove Notification Proc
|
---|
110 | Function RemoveNotifier(AddInNotifier:TIAddInNotifier):Boolean; Virtual;Abstract;
|
---|
111 | //Get Version Of the IDE
|
---|
112 | Function GetVersion:LongInt; Virtual;Abstract;
|
---|
113 | End;
|
---|
114 |
|
---|
115 | TIMenuItemIntf=Class;
|
---|
116 |
|
---|
117 | TIMenuFlag = (mfInvalid, mfEnabled, mfVisible, mfChecked, mfBreak, mfBarBreak,mfRadioItem);
|
---|
118 | TIMenuFlags = Set Of TIMenuFlag;
|
---|
119 |
|
---|
120 | TIMenuClickEvent = Procedure(Sender:TIMenuItemIntf) Of Object;
|
---|
121 |
|
---|
122 | //note: All TIMainMenuIntf queried MUST be freed by the client !!
|
---|
123 | TIMainMenuIntf = Class
|
---|
124 | //returns Interface For IDE main Menu (Top Level)
|
---|
125 | Function GetMenuItems: TIMenuItemIntf; Virtual;Abstract;
|
---|
126 | //returns Interface For Menu Item Or Submenu With specified Name
|
---|
127 | Function FindMenuItem(Const MenuName:String):TIMenuItemIntf; Virtual;Abstract;
|
---|
128 | End;
|
---|
129 |
|
---|
130 | //note: All TIMenuItemIntf queried MUST be freed by the client !!
|
---|
131 | TIMenuItemIntf = Class
|
---|
132 | //Destroys Menu Item associated With the Interface, returns False If the Item was created by IDE
|
---|
133 | Function DestroyMenuItem:Boolean; Virtual;Abstract;
|
---|
134 | //Get Index Of This Item within the Menu Tree
|
---|
135 | Function GetIndex:LongInt; Virtual;Abstract;
|
---|
136 | //Get Count Of submenus For This Interface
|
---|
137 | Function GetItemCount:LongInt; Virtual;Abstract;
|
---|
138 | //Get Submenu Item With specified Index
|
---|
139 | Function GetItem(Index:LongInt):TIMenuItemIntf; Virtual;Abstract;
|
---|
140 | //Get (internal !) Name Of Menu associated With Interface, See also GetCaption
|
---|
141 | Function GetName:String; Virtual;Abstract;
|
---|
142 | //Get parent Interface Of Item Or Nil
|
---|
143 | Function GetParent: TIMenuItemIntf; Virtual;Abstract;
|
---|
144 | //Get Caption Of Menu associated With the Interface
|
---|
145 | Function GetCaption:String; Virtual;Abstract;
|
---|
146 | //Set Caption Of Menu associated With the Interface
|
---|
147 | Function SetCaption(Const Caption:String):Boolean; Virtual;Abstract;
|
---|
148 | //Get ShortCut Of Menu
|
---|
149 | Function GetShortCut:TKeyCode; Virtual;Abstract;
|
---|
150 | //Set ShortCut Of Menu
|
---|
151 | Function SetShortCut(ShortCut:TKeyCode):Boolean; Virtual;Abstract;
|
---|
152 | //Get Flags Of Menu
|
---|
153 | Function GetFlags:TIMenuFlags; Virtual;Abstract;
|
---|
154 | //Set Flags Of Menu
|
---|
155 | Function SetFlags(Mask,Flags: TIMenuFlags):Boolean; Virtual;Abstract;
|
---|
156 | //Get Hint Of Menu
|
---|
157 | Function GetHint:String; Virtual;Abstract;
|
---|
158 | //Set Hint Of Menu
|
---|
159 | Function SetHint(Hint:String):Boolean; Virtual;Abstract;
|
---|
160 | //Get help context Of Menu
|
---|
161 | Function GetContext:THelpContext; Virtual;Abstract;
|
---|
162 | //Set help context For Menu
|
---|
163 | Function SetContext(context:THelpContext):Boolean; Virtual;Abstract;
|
---|
164 | //Get OnClick event For the Menu
|
---|
165 | Function GetOnClick:TIMenuClickEvent; Virtual;Abstract;
|
---|
166 | //Set OnClick event For the Menu
|
---|
167 | Function SetOnClick(Click:TIMenuClickEvent):Boolean; Virtual;Abstract;
|
---|
168 | //inserts an Item
|
---|
169 | Function InsertItem(Index:LongInt;Caption,Name,Hint:String;
|
---|
170 | ShortCut:TKeyCode;context:THelpContext;Flags:TIMenuFlags;
|
---|
171 | EventHandler:TIMenuClickEvent):TIMenuItemIntf; Virtual;Abstract;
|
---|
172 | //Get Menu Item associates With the Interface - Use With care !
|
---|
173 | Function GetMenuEntry:TMenuItem; Virtual;Abstract;
|
---|
174 | End;
|
---|
175 |
|
---|
176 | TNotifyCode = (ncModuleDeleted, ncModuleRenamed, ncEditorModified,
|
---|
177 | ncFormModified, ncEditorSelected, ncFormSelected, ncBeforeSave,
|
---|
178 | ncAfterSave, ncFormSaving, ncProjResModified);
|
---|
179 |
|
---|
180 | TIModuleNotifier=Class
|
---|
181 | Procedure notify(NotifyCode:TNotifyCode); Virtual;Abstract;
|
---|
182 | Procedure ComponentRenamed(ComponentHandle:Pointer;
|
---|
183 | Const OldName,NewName:String); Virtual;Abstract;
|
---|
184 | End;
|
---|
185 |
|
---|
186 | TIEditorInterface=Class;
|
---|
187 | TIFormInterface=Class;
|
---|
188 |
|
---|
189 | //represents File And Forms Open In A project
|
---|
190 | //note: All TIModuleInterface queried MUST be freed by the client !!
|
---|
191 | TIModuleInterface=Class
|
---|
192 | //Get Editor Interface For the Module Or Nil
|
---|
193 | Function GetEditorInterface:TIEditorInterface; Virtual;Abstract;
|
---|
194 | //Get Form Interface For the Module Or Nil
|
---|
195 | Function GetFormInterface:TIFormInterface; Virtual;Abstract;
|
---|
196 | //Close the Module without Saving (See save)
|
---|
197 | Function Close:Boolean; Virtual;Abstract;
|
---|
198 | //Saves the Module, If forcesave Is True, the user will Not be asked
|
---|
199 | Function save(forcesave: Boolean):Boolean; Virtual;Abstract;
|
---|
200 | //Rename Module
|
---|
201 | Function Rename(Const NewName:String):Boolean; Virtual;Abstract;
|
---|
202 | //Show Source File Of Editor In topmost Editor Window
|
---|
203 | Function ShowSource:Boolean; Virtual;Abstract;
|
---|
204 | //Show Form Of Module If present
|
---|
205 | Function ShowForm:Boolean; Virtual;Abstract;
|
---|
206 | //Add Notification Proc
|
---|
207 | Function AddNotifier(AModuleNotifier:TIModuleNotifier):Boolean; Virtual;Abstract;
|
---|
208 | //Remove Notification Proc
|
---|
209 | Function RemoveNotifier(AModuleNotifier:TIModuleNotifier):Boolean; Virtual;Abstract;
|
---|
210 | End;
|
---|
211 |
|
---|
212 | TEditPos = Record
|
---|
213 | Col: SMALLINT;
|
---|
214 | Line: LongInt;
|
---|
215 | End;
|
---|
216 |
|
---|
217 | TSyntaxHighlighter = (shNone, shPascal, shSQL, shQuery);
|
---|
218 |
|
---|
219 | //represents Editor File opened
|
---|
220 | //note: All TIEditorInterface queried MUST be freed by the client !!
|
---|
221 | TIEditorInterface=Class
|
---|
222 | //gets Text At specified Position
|
---|
223 | Function GetText(Position:LongInt;Var Buffer;BufSize:LongInt):LongInt;Virtual;Abstract;
|
---|
224 | //copies Text from actual Position To Pos into the Clipboard
|
---|
225 | Function CopyTo(Pos:LongInt):Boolean; Virtual;Abstract;
|
---|
226 | //deletes Text from actual positon To Pos into the Clipboard
|
---|
227 | Function DeleteTo(Pos:LongInt):Boolean; Virtual;Abstract;
|
---|
228 | //Insert specified Text At Current Position
|
---|
229 | Function Insert(Var Buffer;BufSize:LongInt):Boolean; Virtual;Abstract;
|
---|
230 | //Get Editor Position
|
---|
231 | Function Position: LongInt; Virtual;Abstract;
|
---|
232 | //Get File Name Of Editor
|
---|
233 | Function FileName:String; Virtual;Abstract;
|
---|
234 | //Get total Lines Of edit Buffer
|
---|
235 | Function LinesInBuffer:LongInt; Virtual;Abstract;
|
---|
236 | //returns True If edit Buffer was Modified
|
---|
237 | Function BufferModified:Boolean; Virtual;Abstract;
|
---|
238 | //Forces the Editor To be Modified
|
---|
239 | Function MarkModified:Boolean; Virtual;Abstract;
|
---|
240 | //sets color Table
|
---|
241 | Function SetSyntaxHighlighter(SyntaxHighlighter:TSyntaxHighlighter):TSyntaxHighlighter;Virtual;Abstract;
|
---|
242 | //Get Editor Position
|
---|
243 | Function GetPos:TEditPos; Virtual;Abstract;
|
---|
244 | //Set Editor positon
|
---|
245 | Procedure SetPos(Value: TEditPos); Virtual;Abstract;
|
---|
246 | //Get Editor Form Instance - Use With care !
|
---|
247 | Function GetEditorForm:TEditor; Virtual;Abstract;
|
---|
248 |
|
---|
249 | Property CursorPos: TEditPos Read GetPos Write SetPos;
|
---|
250 | End;
|
---|
251 |
|
---|
252 | TIComponentInterface=Class;
|
---|
253 |
|
---|
254 | //represents Form inside designer
|
---|
255 | //note: All TIFormInterface queried MUST be freed by the client !!
|
---|
256 | TIFormInterface=Class
|
---|
257 | //returns Unit File Name For the Form
|
---|
258 | Function FileName:String; Virtual;Abstract;
|
---|
259 | //returns True If the Form Is Modified
|
---|
260 | Function FormModified:Boolean; Virtual;Abstract;
|
---|
261 | //Forces the Form To be marked As Modified
|
---|
262 | Function MarkModified:Boolean; Virtual;Abstract;
|
---|
263 | //Get Component Interface For the Form
|
---|
264 | Function GetFormComponent:TIComponentInterface; Virtual;Abstract;
|
---|
265 | //Get Form Instance For the Form - Use With care !
|
---|
266 | Function GetFormInstance:TForm; Virtual;Abstract;
|
---|
267 | //Find Component by Name And return Interface
|
---|
268 | Function FindComponent(Const Name:String):TIComponentInterface; Virtual;Abstract;
|
---|
269 | //Get Component Interface from Instance
|
---|
270 | Function GetComponentFromHandle(ComponentHandle:TObject):TIComponentInterface; Virtual;Abstract;
|
---|
271 | //Get Selection Count In Form Editor
|
---|
272 | Function GetSelCount:LongInt; Virtual;Abstract;
|
---|
273 | //Get Selected Component Interface from Index
|
---|
274 | Function GetSelComponent(Index:LongInt):TIComponentInterface; Virtual;Abstract;
|
---|
275 | //gets parent Interface that created the Form
|
---|
276 | Function GetCreateParent: TIComponentInterface; Virtual;Abstract;
|
---|
277 | //Create New Component, If containter Is Not Nil, it Is the parent, If Name Is Empty, it Is auto-created
|
---|
278 | Function CreateComponent(Container: TIComponentInterface;Const TypeName,Name:String;
|
---|
279 | X,Y,W,H:LongInt):TIComponentInterface; Virtual;Abstract;
|
---|
280 | End;
|
---|
281 |
|
---|
282 | TPropertyType = (ptUnknown, ptInteger, ptChar, ptEnumeration, ptFloat,
|
---|
283 | ptString, ptSet, ptClass, ptMethod, ptWChar, ptLString, ptLWString,
|
---|
284 | ptVariant,ptBoolean,ptCString,ptClassRef,ptRecord);
|
---|
285 |
|
---|
286 | TGetChildCallback = Function(Param:Pointer;ComponentInterface:TIComponentInterface):Boolean;
|
---|
287 |
|
---|
288 | //represents Components inside A Form
|
---|
289 | //note: All TIComponentInterface queried MUST be freed by the client !!
|
---|
290 | TIComponentInterface=Class
|
---|
291 | //returns Component Type As String
|
---|
292 | Function GetComponentType:String; Virtual;Abstract;
|
---|
293 | //returns Component Instance - Use With care !
|
---|
294 | Function GetComponentHandle:TComponent; Virtual;Abstract;
|
---|
295 | //returns parent Interface
|
---|
296 | Function GetParent:TIComponentInterface; Virtual;Abstract;
|
---|
297 | //returns True If Interface Is A descendant Of TControl
|
---|
298 | Function IsTControl:Boolean; Virtual;Abstract;
|
---|
299 | //returns Property Count For the Interface Instance
|
---|
300 | Function GetPropCount:LongInt; Virtual;Abstract;
|
---|
301 | //Get Property Name from Index
|
---|
302 | Function GetPropName(Index:LongInt):String; Virtual;Abstract;
|
---|
303 | //Get Property Type from Index
|
---|
304 | Function GetPropType(Index:LongInt;Var TypeLen:LongInt):TPropertyType; Virtual;Abstract;
|
---|
305 | //Get Property Type from Name
|
---|
306 | Function GetPropTypeByName(Const Name:String;Var TypeLen:LongInt):TPropertyType; Virtual;Abstract;
|
---|
307 | //gets Property Value from Index
|
---|
308 | Function GetPropValue(Index:LongInt;Var Value):Boolean; Virtual;Abstract;
|
---|
309 | //gets Property Value from Name
|
---|
310 | Function GetPropValueByName(Const Name:String;Var Value):Boolean; Virtual;Abstract;
|
---|
311 | //sets Property from Index
|
---|
312 | Function SetProp(Index:LongInt;Const Value):Boolean; Virtual;Abstract;
|
---|
313 | //sets Property from Name
|
---|
314 | Function SetPropByName(Const Name:String;Const Value):Boolean; Virtual;Abstract;
|
---|
315 | //Enums component's Children
|
---|
316 | Function GetChildren(Param:Pointer;Proc:TGetChildCallback): Boolean; Virtual;Abstract;
|
---|
317 | //Get Count Of Child Controls
|
---|
318 | Function GetControlCount:LongInt; Virtual;Abstract;
|
---|
319 | //Get Control from Index
|
---|
320 | Function GetControl(Index:LongInt):TIComponentInterface; Virtual;Abstract;
|
---|
321 | //Get Count Of Child Components
|
---|
322 | Function GetComponentCount:LongInt; Virtual;Abstract;
|
---|
323 | //Get Child Component from Index
|
---|
324 | Function GetComponent(Index:LongInt):TIComponentInterface; Virtual;Abstract;
|
---|
325 | //Select Component
|
---|
326 | Function Select: Boolean; Virtual;Abstract;
|
---|
327 | //Focus Component
|
---|
328 | Function Focus: Boolean; Virtual;Abstract;
|
---|
329 | //Delete Component
|
---|
330 | Function Delete: Boolean; Virtual;Abstract;
|
---|
331 | //Set event Property And Add Some Code To it (optional)
|
---|
332 | Function SetEventProperty(Const PropertyName,MethodName:String;Code:TStream):Boolean;Virtual;Abstract;
|
---|
333 | //Get method Name Of A event Property
|
---|
334 | Function GetEventProperty(Const PropertyName:String):String;Virtual;Abstract;
|
---|
335 | End;
|
---|
336 |
|
---|
337 | //Expert interfaces - provided by client, created And destroyed by IDE
|
---|
338 | TExpertStyle = (esStandard, esForm, esProject, esAddIn);
|
---|
339 | TExpertState = Set Of (esEnabled, esChecked);
|
---|
340 |
|
---|
341 | TIExpert=Class(TComponent)
|
---|
342 | //Required: returns Name Of Expert
|
---|
343 | Function GetName:String; Virtual;Abstract;
|
---|
344 | //Required For styles esForm And esProject: returns author Of Expert
|
---|
345 | Function GetAuthor:String; Virtual;Abstract;
|
---|
346 | //Required For styles esForm And esProject: returns comment Of Expert
|
---|
347 | Function GetComment:String; Virtual;Abstract;
|
---|
348 | //Required For styles esForm And esProject: returns page For repository, Empty String For Default
|
---|
349 | Function GetPage:String; Virtual;Abstract;
|
---|
350 | //Required For styles esForm And esProject: returns Bitmap For Expert, Nil For Default
|
---|
351 | Function GetGlyph: TBitmap; Virtual;Abstract;
|
---|
352 | //Required: returns Style Of Expert
|
---|
353 | Function GetStyle: TExpertStyle; Virtual;Abstract;
|
---|
354 | //Required If Style Is esStandard: returns Menu State Of Expert
|
---|
355 | Function GetState: TExpertState; Virtual;Abstract;
|
---|
356 | //Required: returns UNIQUE IDString Of Expert. Supposed format Is: CompanyName.ExpertFunction, ex. SpeedSoft.AppExpert
|
---|
357 | Function GetIDString:String; Virtual;Abstract;
|
---|
358 | //Required If Style Is esStandard:returns Menu Text For Expert
|
---|
359 | Function GetMenuText:String; Virtual;Abstract;
|
---|
360 | //Required If Style Is esForm,esStandard Or esProject: called whenever project Is invoked
|
---|
361 | Procedure Execute; Virtual;Abstract;
|
---|
362 | //Required: Is called whenever the IDE registeres This Expert
|
---|
363 | Procedure Register; Virtual;Abstract;
|
---|
364 | //Required: Is called whenever the IDE unloads This Expert. the Expert Is destroyed after This call
|
---|
365 | Procedure Unload; Virtual;Abstract;
|
---|
366 | End;
|
---|
367 |
|
---|
368 | TIExpertClass=Class Of TIExpert;
|
---|
369 |
|
---|
370 | Const
|
---|
371 | ToolServices:TIToolServices=Nil;
|
---|
372 |
|
---|
373 | Procedure RegisterLibraryExperts(Experts:Array Of TIExpertClass);
|
---|
374 | Procedure FreeAllLibraryExperts;
|
---|
375 |
|
---|
376 | Implementation
|
---|
377 |
|
---|
378 | Procedure RegisterLibraryExperts(Experts:Array Of TIExpertClass);
|
---|
379 | Var T:LongInt;
|
---|
380 | Begin
|
---|
381 | For T:=0 To High(Experts) Do LibExperts.Add(Experts[T]);
|
---|
382 | End;
|
---|
383 |
|
---|
384 | Procedure FreeAllLibraryExperts;
|
---|
385 | Var T:LongInt;
|
---|
386 | Expert:TIExpert;
|
---|
387 | Begin
|
---|
388 | LibExperts.Clear;
|
---|
389 | For T:=0 To LibExpertInstances.Count-1 Do
|
---|
390 | Begin
|
---|
391 | Expert:=TIExpert(LibExpertInstances.Items[T]);
|
---|
392 | Expert.Unload;
|
---|
393 | Expert.Destroy;
|
---|
394 | End;
|
---|
395 | LibExpertInstances.Clear;
|
---|
396 | End;
|
---|
397 |
|
---|
398 | Procedure RegisterToolsAPI(ToolServ:TIToolServices);
|
---|
399 | Begin
|
---|
400 | ToolServices:=ToolServ;
|
---|
401 | End;
|
---|
402 |
|
---|
403 | Begin
|
---|
404 | RegisterToolsAPIProc:=Pointer(@RegisterToolsAPI);
|
---|
405 | End.
|
---|
406 |
|
---|