unit App_prop; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs; type TDuplicateError = class(Exception); TMainFormError = class(Exception); TApplicationProperties = class(TComponent) private { Private declarations } fHint : String; fHintColor : TColor; fHintPause : Integer; fShowHint : Boolean; fOnActivate : TNotifyEvent; fOnDeactivate : TNotifyEvent; fOnException : TExceptionEvent; fOnHelp : THelpEvent; fOnHint : TNotifyEvent; fOnIdle : TIdleEvent; fOnMessage : TMessageEvent; protected { Protected declarations } public { Public declarations } constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Loaded; override; published { Published declarations } property Hint : String read fHint write fHint; property HintColor : TColor read fHintColor write fHintColor; property HintPause : Integer read fHintPause write fHintPause; property ShowHint : Boolean read fShowHint write fShowHint; property OnActivate : TNotifyEvent read fOnActivate write fOnActivate; property OnDeactivate : TNotifyEvent read fOnDeactivate write fOnDeactivate; property OnException : TExceptionEvent read fOnException write fOnException; property OnHelp : THelpEvent read fOnHelp write fOnHelp; property OnHint : TNotifyEvent read fOnHint write fOnHint; property OnIdle : TIdleEvent read fOnIdle write fOnIdle; property OnMessage : TMessageEvent read fOnMessage write fOnMessage; end; procedure Register; implementation var ComponentCounter : Integer; constructor TApplicationProperties.Create(AOwner: TComponent); begin inherited Create(AOwner); Inc(ComponentCounter); if ComponentCounter > 1 then raise TDuplicateError.Create('You can have only ' + 'one ApplicationProperties component in a project'); fHintColor := Application.HintColor; fHintPause := Application.HintPause; fShowHint := Application.ShowHint; end; destructor TApplicationProperties.Destroy; begin inherited Destroy; Dec(ComponentCounter); end; procedure TApplicationProperties.Loaded; begin if fHint <> '' then Application.Hint := fHint; if fHintColor <> Application.HintColor then Application.HintColor := fHintColor; if fHintPause <> Application.HintPause then Application.HintPause := fHintPause; if fShowHint <> Application.ShowHint then Application.ShowHint := fShowHint; if Assigned(fOnActivate) then Application.OnActivate := fOnActivate; if Assigned(fOnDeactivate) then Application.OnDeactivate := fOnDeactivate; if Assigned(fOnException) then Application.OnException := fOnException; if Assigned(fOnHelp) then Application.OnHelp := fOnHelp; if Assigned(fOnHint) then Application.OnHint := fOnHint; if Assigned(fOnIdle) then Application.OnIdle := fOnIdle; if Assigned(fOnMessage) then Application.OnMessage := fOnMessage; end; procedure Register; begin RegisterComponents('Samples', [TApplicationProperties]); end; initialization ComponentCounter := 0; end.