• delphi action学习


    procedure TEditAction.UpdateTarget(Target: TObject);
    begin
      if (Self is TEditCut) then
        Enabled := (GetControl(Target).SelLength > 0) and not GetControl(Target).ReadOnly
      else if (Self is TEditCopy) then
        Enabled := (GetControl(Target).SelLength > 0);
    end;
      TEditCopy = class(TEditAction)
      public
        procedure ExecuteTarget(Target: TObject); override;
      end;
      TEditAction = class(TAction)
      private
        FControl: TCustomEdit;
        procedure SetControl(Value: TCustomEdit);
      protected
        function GetControl(Target: TObject): TCustomEdit; virtual;
        procedure Notification(AComponent: TComponent; Operation: TOperation); override;
      public
        destructor Destroy; override;
        function HandlesTarget(Target: TObject): Boolean; override;
        procedure UpdateTarget(Target: TObject); override;
        property Control: TCustomEdit read FControl write SetControl;
      end;
      TEditPaste = class(TEditAction)
      public
        procedure UpdateTarget(Target: TObject); override;
        procedure ExecuteTarget(Target: TObject); override;
      end;
    
      TEditSelectAll = class(TEditAction)
      public
        procedure ExecuteTarget(Target: TObject); override;
        procedure UpdateTarget(Target: TObject); override;
      end;
    执行命令
    procedure
    TEditSelectAll.ExecuteTarget(Target: TObject); begin GetControl(Target).SelectAll; end;
    更新控件状态
    procedure TEditSelectAll.UpdateTarget(Target: TObject); begin Enabled := Length(GetControl(Target).Text) > 0; end;

     UpdateTarget不断的在调用

    function TEditAction.GetControl(Target: TObject): TCustomEdit;
    begin
      { We could hard cast Target as a TCustomEdit since HandlesTarget "should" be
        called before ExecuteTarget and UpdateTarget, however, we're being safe. }
      Result := Target as TCustomEdit;
    end;
  • 相关阅读:
    Could not transfer artifact org.apache.maven.plugins:maven-resources-plugin:pom:2.6 from/to central
    SpringMVC详解
    数据库连接池
    事务的隔离级别
    数据库四大特性
    Eclipse自动编码提示设置
    RequestDispatcher.forward转发与HttpServletResponse.sendRedirect重定向
    c#代码混淆
    java反射机制
    (转)redis是什么
  • 原文地址:https://www.cnblogs.com/cb168/p/6038303.html
Copyright © 2020-2023  润新知