[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    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.

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]