home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2000 October / tst.iso / programs / borland / RUNIMAGE / DELPHI40 / DOC / ACTNLIST.INT next >
Encoding:
Text File  |  1998-06-17  |  5.4 KB  |  160 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Borland Delphi Visual Component Library         }
  5. {                                                       }
  6. {       Copyright (c) 1998 Inprise Corporation          }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit ActnList;
  11.  
  12. interface
  13.  
  14. uses Classes, Messages, ImgList;
  15.  
  16. type
  17.  
  18. { TContainedAction }
  19.  
  20.   TCustomActionList = class;
  21.  
  22.   TContainedAction = class(TBasicAction)
  23.   protected
  24.     procedure ReadState(Reader: TReader); override;
  25.     procedure SetParentComponent(AParent: TComponent); override;
  26.   public
  27.     destructor Destroy; override;
  28.     function Execute: Boolean; override;
  29.     function GetParentComponent: TComponent; override;
  30.     function HasParent: Boolean; override;
  31.     function Update: Boolean; override;
  32.     property ActionList: TCustomActionList;
  33.     property Index: Integer;
  34.   published
  35.     property Category: string;
  36.   end;
  37.  
  38.   TContainedActionClass = class of TContainedAction;
  39.  
  40. { TCustomActionList }
  41.  
  42.   TActionEvent = procedure (Action: TBasicAction; var Handled: Boolean) of object;
  43.  
  44.   TCustomActionList = class(TComponent)
  45.   protected
  46.     procedure Change; virtual;
  47.     procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
  48.     procedure Notification(AComponent: TComponent;
  49.       Operation: TOperation); override;
  50.     procedure SetChildOrder(Component: TComponent; Order: Integer); override;
  51.     property OnChange: TNotifyEvent;
  52.     property OnExecute: TActionEvent;
  53.     property OnUpdate: TActionEvent;
  54.   public
  55.     constructor Create(AOwner: TComponent); override;
  56.     destructor Destroy; override;
  57.     function ExecuteAction(Action: TBasicAction): Boolean; override;
  58.     function IsShortCut(var Message: TWMKey): Boolean;
  59.     function UpdateAction(Action: TBasicAction): Boolean; override;
  60.     property Actions[Index: Integer]: TContainedAction; default;
  61.     property ActionCount: Integer;
  62.     property Images: TCustomImageList;
  63.   end;
  64.  
  65. { TActionList }
  66.  
  67.   TActionList = class(TCustomActionList)
  68.   published
  69.     property Images;
  70.     property OnChange;
  71.     property OnExecute;
  72.     property OnUpdate;
  73.   end;
  74.  
  75. { TControlAction }
  76.  
  77.   THintEvent = procedure (var HintStr: string; var CanShow: Boolean) of object;
  78.  
  79.   TCustomAction = class(TContainedAction)
  80.   protected
  81.     FImage: TObject;
  82.     FMask: TObject;
  83.     procedure AssignTo(Dest: TPersistent); override;
  84.     procedure SetName(const Value: TComponentName); override;
  85.   public
  86.     constructor Create(AOwner: TComponent); override;
  87.     destructor Destroy; override;
  88.     function DoHint(var HintStr: string): Boolean;
  89.     function Execute: Boolean; override;
  90.     property Caption: string;
  91.     property Checked: Boolean default False;
  92.     property DisableIfNoHandler: Boolean default True;
  93.     property Enabled: Boolean default True;
  94.     property HelpContext: THelpContext default 0;
  95.     property Hint: string;
  96.     property ImageIndex: Integer default -1;
  97.     property ShortCut: TShortCut default 0;
  98.     property Visible: Boolean default True;
  99.     property OnHint: THintEvent;
  100.   end;
  101.  
  102.   TAction = class(TCustomAction)
  103.   published
  104.     property Caption;
  105.     property Checked;
  106.     property Enabled;
  107.     property HelpContext;
  108.     property Hint;
  109.     property ImageIndex;
  110.     property ShortCut;
  111.     property Visible;
  112.     property OnExecute;
  113.     property OnHint;
  114.     property OnUpdate;
  115.   end;
  116.  
  117. { TControlActionLink }
  118.  
  119.   TActionLink = class(TBasicActionLink)
  120.   protected
  121.     function IsCaptionLinked: Boolean; virtual;
  122.     function IsCheckedLinked: Boolean; virtual;
  123.     function IsEnabledLinked: Boolean; virtual;
  124.     function IsHelpContextLinked: Boolean; virtual;
  125.     function IsHintLinked: Boolean; virtual;
  126.     function IsImageIndexLinked: Boolean; virtual;
  127.     function IsShortCutLinked: Boolean; virtual;
  128.     function IsVisibleLinked: Boolean; virtual;
  129.     procedure SetCaption(const Value: string); virtual;
  130.     procedure SetChecked(Value: Boolean); virtual;
  131.     procedure SetEnabled(Value: Boolean); virtual;
  132.     procedure SetHelpContext(Value: THelpContext); virtual;
  133.     procedure SetHint(const Value: string); virtual;
  134.     procedure SetImageIndex(Value: Integer); virtual;
  135.     procedure SetShortCut(Value: TShortCut); virtual;
  136.     procedure SetVisible(Value: Boolean); virtual;
  137.   end;
  138.  
  139.   TActionLinkClass = class of TActionLink;
  140.  
  141. { Action registration }
  142.  
  143.   TEnumActionProc = procedure (const Category: string; ActionClass: TBasicActionClass;
  144.     Info: Pointer) of object;
  145.  
  146. procedure RegisterActions(const CategoryName: string;
  147.   const AClasses: array of TBasicActionClass; Resource: TComponentClass);
  148. procedure UnRegisterActions(const AClasses: array of TBasicActionClass);
  149. procedure EnumRegisteredActions(Proc: TEnumActionProc; Info: Pointer);
  150. function CreateAction(AOwner: TComponent; ActionClass: TBasicActionClass): TBasicAction;
  151.  
  152. const
  153.   RegisterActionsProc: procedure (const CategoryName: string;
  154.     const AClasses: array of TBasicActionClass; Resource: TComponentClass) = nil;
  155.   UnRegisterActionsProc: procedure (const AClasses: array of TBasicActionClass) = nil;
  156.   EnumRegisteredActionsProc: procedure (Proc: TEnumActionProc; Info: Pointer) = nil;
  157.   CreateActionProc: function (AOwner: TComponent; ActionClass: TBasicActionClass): TBasicAction = nil;
  158.  
  159. implementation
  160.