IDEIntf: TAbstractIDEOptions added Restore parameter to distinguish between Ok and Cancel

git-svn-id: trunk@27681 -
This commit is contained in:
mattias 2010-10-13 14:47:27 +00:00
parent e17fee021d
commit 5223a83d19
12 changed files with 190 additions and 58 deletions

View File

@ -155,7 +155,7 @@ type
public public
class function GetGroupCaption:string; override; class function GetGroupCaption:string; override;
class function GetInstance: TAbstractIDEOptions; override; class function GetInstance: TAbstractIDEOptions; override;
procedure DoAfterWrite; override; procedure DoAfterWrite(Restore: boolean); override;
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
@ -414,9 +414,10 @@ begin
Result := CodeExplorerOptions; Result := CodeExplorerOptions;
end; end;
procedure TCodeExplorerOptions.DoAfterWrite; procedure TCodeExplorerOptions.DoAfterWrite(Restore: boolean);
begin begin
Save; if not Restore then
Save;
end; end;
procedure TCodeExplorerOptions.Clear; procedure TCodeExplorerOptions.Clear;

View File

@ -104,7 +104,7 @@ type
public public
class function GetGroupCaption:string; override; class function GetGroupCaption:string; override;
class function GetInstance: TAbstractIDEOptions; override; class function GetInstance: TAbstractIDEOptions; override;
procedure DoAfterWrite; override; procedure DoAfterWrite(Restore: boolean); override;
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
@ -317,10 +317,11 @@ begin
Result := CodeToolsOpts; Result := CodeToolsOpts;
end; end;
procedure TCodeToolsOptions.DoAfterWrite; procedure TCodeToolsOptions.DoAfterWrite(Restore: boolean);
begin begin
inherited DoAfterWrite; inherited DoAfterWrite(Restore);
Save; if not Restore then
Save;
end; end;
procedure TCodeToolsOptions.Load; procedure TCodeToolsOptions.Load;

View File

@ -91,7 +91,8 @@
- history - history
- refactor compiler options (default options, load, save to file) - refactor compiler options (default options, load, save to file)
- disabled project compiler options, used only for storage - disabled project compiler options, used only for storage
- replaced OwnerProject with LazProject - replaced project compiler options OwnerProject+Project with LazProject
- addded changestamp, assign, equals to compiler options
- added buildmodes to project - added buildmodes to project
- moved compileroptions and macrovalues to active buildmode - moved compileroptions and macrovalues to active buildmode

View File

@ -45,7 +45,7 @@ uses
type type
{ TCompilerDiffTool { TCompilerDiffTool
A tool to create the difference between two option sets } A tool to collect the difference between two option sets }
TCompilerDiffTool = class TCompilerDiffTool = class
private private

View File

@ -1009,7 +1009,7 @@ type
public public
class function GetGroupCaption:string; override; class function GetGroupCaption:string; override;
class function GetInstance: TAbstractIDEOptions; override; class function GetInstance: TAbstractIDEOptions; override;
procedure DoAfterWrite; override; procedure DoAfterWrite(Restore: boolean); override;
public public
constructor Create; constructor Create;
constructor CreateDefaultOnly; constructor CreateDefaultOnly;
@ -3709,9 +3709,10 @@ begin
Result := EditorOpts; Result := EditorOpts;
end; end;
procedure TEditorOptions.DoAfterWrite; procedure TEditorOptions.DoAfterWrite(Restore: boolean);
begin begin
Save; if not Restore then
Save;
end; end;
function TEditorOptions.GetSynEditOptionName(SynOption: TSynEditorOption): string; function TEditorOptions.GetSynEditOptionName(SynOption: TSynEditorOption): string;

View File

@ -286,7 +286,7 @@ type
public public
class function GetGroupCaption:string; override; class function GetGroupCaption:string; override;
class function GetInstance: TAbstractIDEOptions; override; class function GetInstance: TAbstractIDEOptions; override;
procedure DoAfterWrite; override; procedure DoAfterWrite(Restore: boolean); override;
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
@ -797,10 +797,11 @@ begin
Result := EnvironmentOptions; Result := EnvironmentOptions;
end; end;
procedure TEnvironmentOptions.DoAfterWrite; procedure TEnvironmentOptions.DoAfterWrite(Restore: boolean);
begin begin
Save(False); if not Restore then
inherited DoAfterWrite; Save(False);
inherited DoAfterWrite(Restore);
end; end;
procedure TEnvironmentOptions.SetLazarusDefaultFilename; procedure TEnvironmentOptions.SetLazarusDefaultFilename;

View File

@ -20,7 +20,7 @@
Abstract: Abstract:
The frame for 'build modes' on the compiler options. The frame for 'build modes' on the compiler options.
Allows to edit build modes and build macro values. Allows to add/delete/edit build modes and build macro values.
It does not allow to define new build macros, only values. It does not allow to define new build macros, only values.
ToDo: ToDo:

View File

@ -54,7 +54,7 @@ type
public public
class function GetGroupCaption:string; override; class function GetGroupCaption:string; override;
class function GetInstance: TAbstractIDEOptions; override; class function GetInstance: TAbstractIDEOptions; override;
procedure DoAfterWrite; override; procedure DoAfterWrite(Restore: boolean); override;
public public
constructor Create; constructor Create;
procedure Clear; procedure Clear;
@ -110,9 +110,10 @@ begin
Result := HelpOpts; Result := HelpOpts;
end; end;
procedure THelpOptions.DoAfterWrite; procedure THelpOptions.DoAfterWrite(Restore: boolean);
begin begin
Save; if not Restore then
Save;
end; end;
procedure THelpOptions.Clear; procedure THelpOptions.Clear;

View File

@ -85,7 +85,7 @@ type
function FindEditorClass(GroupIndex, AIndex: integer): TAbstractIDEOptionsEditorClass; override; function FindEditorClass(GroupIndex, AIndex: integer): TAbstractIDEOptionsEditorClass; override;
procedure TraverseSettings(AOptions: TAbstractIDEOptions; anAction: TIDEOptsDlgAction); procedure TraverseSettings(AOptions: TAbstractIDEOptions; anAction: TIDEOptsDlgAction);
procedure ReadAll; procedure ReadAll;
procedure WriteAll; procedure WriteAll(Restore: boolean);
property OptionsFilter: TAbstractIDEOptionsClass read FOptionsFilter write FOptionsFilter; property OptionsFilter: TAbstractIDEOptionsClass read FOptionsFilter write FOptionsFilter;
property OnLoadIDEOptions: TOnLoadIDEOptions read FOnLoadOptions write FOnLoadOptions; property OnLoadIDEOptions: TOnLoadIDEOptions read FOnLoadOptions write FOnLoadOptions;
@ -277,7 +277,7 @@ begin
InstanceList.Free; InstanceList.Free;
end; end;
procedure TIDEOptionsDialog.WriteAll; procedure TIDEOptionsDialog.WriteAll(Restore: boolean);
var var
i: integer; i: integer;
Rec: PIDEOptionsGroupRec; Rec: PIDEOptionsGroupRec;
@ -295,9 +295,12 @@ begin
Instance := Rec^.GroupClass.GetInstance; Instance := Rec^.GroupClass.GetInstance;
if Instance <> nil then if Instance <> nil then
begin begin
Instance.DoBeforeWrite; Instance.DoBeforeWrite(Restore);
TraverseSettings(Instance,iodaWrite); if Restore then
Instance.DoAfterWrite; TraverseSettings(Instance,iodaWrite)
else
TraverseSettings(Instance,iodaRestore);
Instance.DoAfterWrite(Restore);
end; end;
end; end;
end; end;

View File

@ -366,16 +366,16 @@ type
AOptionsFilter: TAbstractIDEOptionsClass = nil); override; AOptionsFilter: TAbstractIDEOptionsClass = nil); override;
procedure DoEnvironmentOptionsBeforeRead(Sender: TObject); procedure DoEnvironmentOptionsBeforeRead(Sender: TObject);
procedure DoEnvironmentOptionsBeforeWrite(Sender: TObject); procedure DoEnvironmentOptionsBeforeWrite(Sender: TObject; Restore: boolean);
procedure DoEnvironmentOptionsAfterWrite(Sender: TObject); procedure DoEnvironmentOptionsAfterWrite(Sender: TObject; Restore: boolean);
procedure DoEditorOptionsBeforeRead(Sender: TObject); procedure DoEditorOptionsBeforeRead(Sender: TObject);
procedure DoEditorOptionsAfterWrite(Sender: TObject); procedure DoEditorOptionsAfterWrite(Sender: TObject; Restore: boolean);
procedure DoCodetoolsOptionsAfterWrite(Sender: TObject); procedure DoCodetoolsOptionsAfterWrite(Sender: TObject; Restore: boolean);
procedure DoCodeExplorerOptionsAfterWrite(Sender: TObject); procedure DoCodeExplorerOptionsAfterWrite(Sender: TObject; Restore: boolean);
procedure DoProjectOptionsBeforeRead(Sender: TObject); procedure DoProjectOptionsBeforeRead(Sender: TObject);
procedure DoProjectOptionsAfterWrite(Sender: TObject); procedure DoProjectOptionsAfterWrite(Sender: TObject; Restore: boolean);
procedure DoCompilerOptionsBeforeWrite(Sender: TObject); procedure DoCompilerOptionsBeforeWrite(Sender: TObject; Restore: boolean);
procedure DoCompilerOptionsAfterWrite(Sender: TObject); procedure DoCompilerOptionsAfterWrite(Sender: TObject; Restore: boolean);
// SourceNotebook events // SourceNotebook events
procedure OnSrcNoteBookActivated(Sender: TObject); procedure OnSrcNoteBookActivated(Sender: TObject);
@ -4294,7 +4294,7 @@ begin
ReadAll; ReadAll;
end; end;
if IDEOptionsDialog.ShowModal = mrOk then begin if IDEOptionsDialog.ShowModal = mrOk then begin
IDEOptionsDialog.WriteAll; IDEOptionsDialog.WriteAll(false);
MainBuildBoss.SetBuildTarget(Project1.CompilerOptions.TargetOS, MainBuildBoss.SetBuildTarget(Project1.CompilerOptions.TargetOS,
Project1.CompilerOptions.TargetCPU,Project1.CompilerOptions.LCLWidgetType); Project1.CompilerOptions.TargetCPU,Project1.CompilerOptions.LCLWidgetType);
UpdateHighlighters(True); UpdateHighlighters(True);
@ -4303,6 +4303,8 @@ begin
Application.TaskBarBehavior := tbSingleButton Application.TaskBarBehavior := tbSingleButton
else else
Application.TaskBarBehavior := tbDefault; Application.TaskBarBehavior := tbDefault;
end else begin
IDEOptionsDialog.WriteAll(true);
end; end;
finally finally
IDEOptionsDialog.Free; IDEOptionsDialog.Free;
@ -4315,13 +4317,16 @@ begin
SaveDesktopSettings(EnvironmentOptions); SaveDesktopSettings(EnvironmentOptions);
end; end;
procedure TMainIDE.DoEnvironmentOptionsBeforeWrite(Sender: TObject); procedure TMainIDE.DoEnvironmentOptionsBeforeWrite(Sender: TObject;
Restore: boolean);
begin begin
if Restore then exit;
OldCompilerFilename:=EnvironmentOptions.CompilerFilename; OldCompilerFilename:=EnvironmentOptions.CompilerFilename;
OldLanguage:=EnvironmentOptions.LanguageID; OldLanguage:=EnvironmentOptions.LanguageID;
end; end;
procedure TMainIDE.DoEnvironmentOptionsAfterWrite(Sender: TObject); procedure TMainIDE.DoEnvironmentOptionsAfterWrite(Sender: TObject;
Restore: boolean);
var var
MacroValueChanged, MacroValueChanged,
FPCSrcDirChanged, FPCCompilerChanged, FPCSrcDirChanged, FPCCompilerChanged,
@ -4373,6 +4378,7 @@ var
end; end;
begin begin
if Restore then exit;
// invalidate cached substituted macros // invalidate cached substituted macros
IncreaseCompilerParseStamp; IncreaseCompilerParseStamp;
CompileProgress.SetEnabled(EnvironmentOptions.ShowCompileDialog); CompileProgress.SetEnabled(EnvironmentOptions.ShowCompileDialog);
@ -4416,21 +4422,25 @@ begin
Project1.UpdateAllCustomHighlighter; Project1.UpdateAllCustomHighlighter;
end; end;
procedure TMainIDE.DoEditorOptionsAfterWrite(Sender: TObject); procedure TMainIDE.DoEditorOptionsAfterWrite(Sender: TObject; Restore: boolean);
begin begin
if Restore then exit;
Project1.UpdateAllSyntaxHighlighter; Project1.UpdateAllSyntaxHighlighter;
UpdateHighlighters(True); UpdateHighlighters(True);
SourceEditorManager.ReloadEditorOptions; SourceEditorManager.ReloadEditorOptions;
ReloadMenuShortCuts; ReloadMenuShortCuts;
end; end;
procedure TMainIDE.DoCodetoolsOptionsAfterWrite(Sender: TObject); procedure TMainIDE.DoCodetoolsOptionsAfterWrite(Sender: TObject; Restore: boolean);
begin begin
if Restore then exit;
CodeToolsOpts.AssignTo(CodeToolBoss); CodeToolsOpts.AssignTo(CodeToolBoss);
end; end;
procedure TMainIDE.DoCodeExplorerOptionsAfterWrite(Sender: TObject); procedure TMainIDE.DoCodeExplorerOptionsAfterWrite(Sender: TObject;
Restore: boolean);
begin begin
if Restore then exit;
if CodeExplorerView<>nil then if CodeExplorerView<>nil then
CodeExplorerView.Refresh(true); CodeExplorerView.Refresh(true);
end; end;
@ -4448,7 +4458,8 @@ begin
end; end;
end; end;
procedure TMainIDE.DoProjectOptionsAfterWrite(Sender: TObject); procedure TMainIDE.DoProjectOptionsAfterWrite(Sender: TObject; Restore: boolean
);
var var
Project: TProject absolute Sender; Project: TProject absolute Sender;
@ -4534,6 +4545,7 @@ var
end; end;
begin begin
if Restore then exit;
SetTitle; SetTitle;
SetAutoCreateForms; SetAutoCreateForms;
// extend include path // extend include path
@ -4547,17 +4559,21 @@ begin
Project.DefineTemplates.AllChanged; Project.DefineTemplates.AllChanged;
end; end;
procedure TMainIDE.DoCompilerOptionsBeforeWrite(Sender: TObject); procedure TMainIDE.DoCompilerOptionsBeforeWrite(Sender: TObject;
Restore: boolean);
begin begin
if Restore then exit;
OldCompOpts := TBaseCompilerOptionsClass(Sender.ClassType).Create(nil); OldCompOpts := TBaseCompilerOptionsClass(Sender.ClassType).Create(nil);
OldCompOpts.Assign(TBaseCompilerOptions(Sender)); OldCompOpts.Assign(TBaseCompilerOptions(Sender));
end; end;
procedure TMainIDE.DoCompilerOptionsAfterWrite(Sender: TObject); procedure TMainIDE.DoCompilerOptionsAfterWrite(Sender: TObject; Restore: boolean
);
var var
ProjCompOpts: TProjectCompilerOptions; ProjCompOpts: TProjectCompilerOptions;
aFilename: String; aFilename: String;
begin begin
if Restore then exit;
if not OldCompOpts.IsEqual(TBaseCompilerOptions(Sender)) then if not OldCompOpts.IsEqual(TBaseCompilerOptions(Sender)) then
begin begin
TBaseCompilerOptions(Sender).Modified := True; TBaseCompilerOptions(Sender).Modified := True;

View File

@ -22,6 +22,13 @@
Abstract: Abstract:
Defines the standard message Quick Fix menu items. Defines the standard message Quick Fix menu items.
ToDo:
- There is no method in an ancestor class to be overriden:
1. option: if the ancestor has a function with the same name: update the parameter list
2. option: remove the method
3. option: add a virtual method to the ancestor
} }
unit MsgQuickFixes; unit MsgQuickFixes;

View File

@ -25,7 +25,7 @@ unit IDEOptionsIntf;
interface interface
uses uses
Classes, SysUtils, Controls, Buttons, Forms; Classes, SysUtils, LCLProc, Controls, Buttons, Forms;
const const
NoParent = -1; NoParent = -1;
@ -36,27 +36,50 @@ type
// types // types
TIDEOptionsHandler = (
iohBeforeRead,
iohAfterRead,
iohBeforeWrite,
iohAfterWrite
);
TIDEOptionsHandlers = set of TIDEOptionsHandler;
TIDEOptionsWriteEvent = procedure(Sender: TObject; Restore: boolean) of object;
{ TAbstractIDEOptions } { TAbstractIDEOptions }
TAbstractIDEOptions = class(TPersistent) TAbstractIDEOptions = class(TPersistent)
private private
fHandlers: array[TIDEOptionsHandler] of TMethodList;
FOnAfterRead: TNotifyEvent; FOnAfterRead: TNotifyEvent;
FOnAfterWrite: TNotifyEvent; FOnAfterWrite: TIDEOptionsWriteEvent;
FOnBeforeRead: TNotifyEvent; FOnBeforeRead: TNotifyEvent;
FOnBeforeWrite: TNotifyEvent; FOnBeforeWrite: TIDEOptionsWriteEvent;
public public
constructor Create;
destructor Destroy; override;
class function GetGroupCaption: string; virtual; abstract; class function GetGroupCaption: string; virtual; abstract;
class function GetInstance: TAbstractIDEOptions; virtual; abstract; class function GetInstance: TAbstractIDEOptions; virtual; abstract;
procedure DoBeforeRead; virtual; procedure DoBeforeRead; virtual;
procedure DoAfterRead; virtual; procedure DoAfterRead; virtual;
procedure DoBeforeWrite; virtual; procedure DoBeforeWrite(Restore: boolean); virtual;
procedure DoAfterWrite; virtual; procedure DoAfterWrite(Restore: boolean); virtual;
procedure AddHandlerBeforeRead(const Handler: TNotifyEvent; const AsFirst: boolean = true); // AsFirst means: first to call
procedure RemoveHandlerBeforeRead(const Handler: TNotifyEvent);
procedure AddHandlerAfterRead(const Handler: TNotifyEvent; const AsFirst: boolean = true); // AsFirst means: first to call
procedure RemoveHandlerAfterRead(const Handler: TNotifyEvent);
procedure AddHandlerBeforeWrite(const Handler: TIDEOptionsWriteEvent; const AsFirst: boolean = true); // AsFirst means: first to call
procedure RemoveHandlerBeforeWrite(const Handler: TIDEOptionsWriteEvent);
procedure AddHandlerAfterWrite(const Handler: TIDEOptionsWriteEvent; const AsFirst: boolean = true); // AsFirst means: first to call
procedure RemoveHandlerAfterWrite(const Handler: TIDEOptionsWriteEvent);
property OnBeforeRead: TNotifyEvent read FOnBeforeRead write FOnBeforeRead; property OnBeforeRead: TNotifyEvent read FOnBeforeRead write FOnBeforeRead;
property OnAfterRead: TNotifyEvent read FOnAfterRead write FOnAfterRead; property OnAfterRead: TNotifyEvent read FOnAfterRead write FOnAfterRead;
property OnBeforeWrite: TNotifyEvent read FOnBeforeWrite write FOnBeforeWrite; property OnBeforeWrite: TIDEOptionsWriteEvent read FOnBeforeWrite write FOnBeforeWrite;
property OnAfterWrite: TNotifyEvent read FOnAfterWrite write FOnAfterWrite; property OnAfterWrite: TIDEOptionsWriteEvent read FOnAfterWrite write FOnAfterWrite;
end; end;
TAbstractIDEOptionsClass = class of TAbstractIDEOptions; TAbstractIDEOptionsClass = class of TAbstractIDEOptions;
@ -139,7 +162,7 @@ type
procedure Notify(Ptr: Pointer; Action: TListNotification); override; procedure Notify(Ptr: Pointer; Action: TListNotification); override;
public public
procedure Resort; procedure Resort;
procedure DoAfterWrite; procedure DoAfterWrite(Restore: boolean);
function GetByIndex(AIndex: Integer): PIDEOptionsGroupRec; function GetByIndex(AIndex: Integer): PIDEOptionsGroupRec;
function GetByGroupClass(AGroupClass: TAbstractIDEOptionsClass): PIDEOptionsGroupRec; function GetByGroupClass(AGroupClass: TAbstractIDEOptionsClass): PIDEOptionsGroupRec;
function Add(AGroupIndex: Integer; AGroupClass: TAbstractIDEOptionsClass): PIDEOptionsGroupRec; reintroduce; function Add(AGroupIndex: Integer; AGroupClass: TAbstractIDEOptionsClass): PIDEOptionsGroupRec; reintroduce;
@ -470,7 +493,7 @@ begin
Items[i]^.Items.Resort; Items[i]^.Items.Resort;
end; end;
procedure TIDEOptionsGroupList.DoAfterWrite; procedure TIDEOptionsGroupList.DoAfterWrite(Restore: boolean);
var var
i: integer; i: integer;
Rec: PIDEOptionsGroupRec; Rec: PIDEOptionsGroupRec;
@ -485,7 +508,7 @@ begin
begin begin
Instance := Rec^.GroupClass.GetInstance; Instance := Rec^.GroupClass.GetInstance;
if Instance <> nil then if Instance <> nil then
Instance.DoAfterWrite; Instance.DoAfterWrite(Restore);
end; end;
end; end;
end; end;
@ -510,28 +533,105 @@ end;
{ TAbstractIDEOptions } { TAbstractIDEOptions }
constructor TAbstractIDEOptions.Create;
var
h: TIDEOptionsHandler;
begin
for h:=low(TIDEOptionsHandler) to high(TIDEOptionsHandler) do
fHandlers[h]:=TMethodList.Create;
end;
destructor TAbstractIDEOptions.Destroy;
var
h: TIDEOptionsHandler;
begin
for h:=low(TIDEOptionsHandler) to high(TIDEOptionsHandler) do
FreeAndNil(fHandlers[h]);
inherited Destroy;
end;
procedure TAbstractIDEOptions.DoBeforeRead; procedure TAbstractIDEOptions.DoBeforeRead;
begin begin
if Assigned(FOnBeforeRead) then if Assigned(FOnBeforeRead) then
OnBeforeRead(Self); FOnBeforeRead(Self);
fHandlers[iohBeforeRead].CallNotifyEvents(Self);
end; end;
procedure TAbstractIDEOptions.DoAfterRead; procedure TAbstractIDEOptions.DoAfterRead;
begin begin
if Assigned(FOnAfterRead) then if Assigned(FOnAfterRead) then
OnAfterRead(Self); FOnAfterRead(Self);
fHandlers[iohAfterRead].CallNotifyEvents(Self);
end; end;
procedure TAbstractIDEOptions.DoBeforeWrite; procedure TAbstractIDEOptions.DoBeforeWrite(Restore: boolean);
var
i: LongInt;
begin begin
if Assigned(FOnBeforeWrite) then if Assigned(FOnBeforeWrite) then
OnBeforeWrite(Self); FOnBeforeWrite(Self,Restore);
i:=fHandlers[iohBeforeWrite].Count;
while fHandlers[iohBeforeWrite].NextDownIndex(i) do
TIDEOptionsWriteEvent(fHandlers[iohBeforeWrite][i])(Self,Restore);
end; end;
procedure TAbstractIDEOptions.DoAfterWrite; procedure TAbstractIDEOptions.DoAfterWrite(Restore: boolean);
var
i: LongInt;
begin begin
if Assigned(FOnAfterWrite) then if Assigned(FOnAfterWrite) then
OnAfterWrite(Self); FOnAfterWrite(Self,Restore);
i:=fHandlers[iohBeforeWrite].Count;
while fHandlers[iohBeforeWrite].NextDownIndex(i) do
TIDEOptionsWriteEvent(fHandlers[iohBeforeWrite][i])(Self,Restore);
end;
procedure TAbstractIDEOptions.AddHandlerBeforeRead(const Handler: TNotifyEvent;
const AsFirst: boolean);
begin
fHandlers[iohBeforeRead].Add(TMethod(Handler),AsFirst);
end;
procedure TAbstractIDEOptions.RemoveHandlerBeforeRead(
const Handler: TNotifyEvent);
begin
fHandlers[iohBeforeRead].Remove(TMethod(Handler));
end;
procedure TAbstractIDEOptions.AddHandlerAfterRead(const Handler: TNotifyEvent;
const AsFirst: boolean);
begin
fHandlers[iohAfterRead].Add(TMethod(Handler),AsFirst);
end;
procedure TAbstractIDEOptions.RemoveHandlerAfterRead(const Handler: TNotifyEvent
);
begin
fHandlers[iohAfterRead].Remove(TMethod(Handler));
end;
procedure TAbstractIDEOptions.AddHandlerBeforeWrite(
const Handler: TIDEOptionsWriteEvent; const AsFirst: boolean);
begin
fHandlers[iohBeforeWrite].Add(TMethod(Handler),AsFirst);
end;
procedure TAbstractIDEOptions.RemoveHandlerBeforeWrite(
const Handler: TIDEOptionsWriteEvent);
begin
fHandlers[iohBeforeWrite].Remove(TMethod(Handler));
end;
procedure TAbstractIDEOptions.AddHandlerAfterWrite(
const Handler: TIDEOptionsWriteEvent; const AsFirst: boolean);
begin
fHandlers[iohAfterWrite].Add(TMethod(Handler),AsFirst);
end;
procedure TAbstractIDEOptions.RemoveHandlerAfterWrite(
const Handler: TIDEOptionsWriteEvent);
begin
fHandlers[iohAfterWrite].Remove(TMethod(Handler));
end; end;
initialization initialization