MdListAct.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit MdListAct;
  2. interface
  3. uses
  4.   ActnList, Classes, StdCtrls, ExtActns, Controls;
  5. type
  6.   TMdCustomListAction = class (TListControlAction)
  7.   protected
  8.     function TargetList (Target: TObject): TCustomListBox;
  9.     function GetControl(Target: TObject): TCustomListControl;
  10.   public
  11.     procedure UpdateTarget (Target: TObject); override;
  12.   published
  13.     property Caption;
  14.     property Enabled;
  15.     property HelpContext;
  16.     property Hint;
  17.     property ImageIndex;
  18.     property ListControl;
  19.     property ShortCut;
  20.     property SecondaryShortCuts;
  21.     property Visible;
  22.     property OnHint;
  23.   end;
  24.   TMdListCutAction = class (TMdCustomListAction)
  25.   public
  26.     procedure ExecuteTarget(Target: TObject); override;
  27.   end;
  28.   TMdListCopyAction = class (TMdCustomListAction)
  29.   public
  30.     procedure ExecuteTarget(Target: TObject); override;
  31.   end;
  32.   TMdListPasteAction = class (TMdCustomListAction)
  33.   public
  34.     procedure UpdateTarget (Target: TObject); override;
  35.     procedure ExecuteTarget (Target: TObject); override;
  36.   end;
  37. procedure Register;
  38. implementation
  39. uses
  40.   Windows, Clipbrd;
  41. function TMdCustomListAction.GetControl(
  42.   Target: TObject): TCustomListControl;
  43. begin
  44.   Result := Target as TCustomListControl;
  45. end;
  46. function TMdCustomListAction.TargetList (Target: TObject): TCustomListBox;
  47. begin
  48.   Result := GetControl (Target) as TCustomListBox;
  49. end;
  50. procedure TMdCustomListAction.UpdateTarget(Target: TObject);
  51. begin
  52.   Enabled := (TargetList (Target).Items.Count > 0)
  53.     and (TargetList (Target).ItemIndex >= 0);
  54. end;
  55. procedure TMdListCopyAction.ExecuteTarget(Target: TObject);
  56. begin
  57.   with TargetList (Target) do
  58.     Clipboard.AsText := Items [ItemIndex];
  59. end;
  60. procedure TMdListCutAction.ExecuteTarget(Target: TObject);
  61. begin
  62.   with TargetList (Target) do
  63.   begin
  64.     Clipboard.AsText := Items [ItemIndex];
  65.     Items.Delete (ItemIndex);
  66.   end;
  67. end;
  68. procedure TMdListPasteAction.ExecuteTarget(Target: TObject);
  69. begin
  70.   TargetList (Target).Items.Add (Clipboard.AsText);
  71. end;
  72. procedure TMdListPasteAction.UpdateTarget(Target: TObject);
  73. begin
  74.   Enabled := Clipboard.HasFormat (CF_TEXT);
  75. end;
  76. procedure Register;
  77. begin
  78.   RegisterActions ('List',
  79.     [TMdListCutAction, TMdListCopyAction, TMdListPasteAction],
  80.     nil);
  81. end;
  82. end.