在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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;
执行命令 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;
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论