如何开发Action?在原有的action上加一个属性. (我的问题是不是很难?怎么没人回答) (100分)

  • 主题发起人 主题发起人 BlueWin
  • 开始时间 开始时间
B

BlueWin

Unregistered / Unconfirmed
GUEST, unregistred user!
我希望制作一个Action,希望有在原有基础上进行改善:
要求:
1.基本条件,所有控件上的Action属性可以选的到,即要继承自TbasicAction。
2.添加一个属性:
Option
SetEnable 如果不选,就不统一改变控件的Enable属性
SetCaption 如果不选,就不统一改变控件的Caption属性
SetEvent 如果不选,就不统一改变控件的OnClick属性
SetImageIndex ...
SetChecked
SetHint

另外:功能虽然很简单,但如果那位提供很有价值的方法,我会另外加分的。

Dephi自带的StandardAction 非常好用,建议大家使用。
 
以前看到过,关于权限控制的控件你查查看
 
shmm好像没有理解我的意思,我只想知道怎么开发,并不关心控件怎么用。
 
你看看Delphi自带的源代码不就得了!
在Borland/Delphi7/Source
目录下!
 
for i := 0 to ActionList1.actioncount - 1 do
begin
TAction(ActionList1.Actions.enabled:=false;
end;
不就行了,你自已扩展一下应不难啊
 
这几天看了一下Delphi的代码,
发现更新控件的属性是在Tcontrol里的ActionChange事件里写的.不好改
不过当Action的单个属性(如Caption)修改时,由action通知控件.可能可以修改.
 
问题:我做了一个控件继承至CustomAction,我的控件如何取代
customaction的属性:
public
property Caption: string read FCaption write SetCaption;
或者Override事件:
private
procedure SetCaption(const Value: string);
 
也许是要在button控件上加那个属性吧。
有没有人认同啊?
 
看来要散分了……[:(]
 
不是Action的问题,
每个控件使用Action时先在ActionChange过程中改变相应的值。
改完后,你如果修改了对应的值,那在Action的属性变化时,
控件上被你修改过的属性是不会跟着变的。
举个例子吧:
如果action1.caption:='Add';
令: button1.action:=action1;
则会触发Button1的ActionChange事件
Button1.Caption='Add';
如果你把Button1.caption :='AddRec';
那Action1的caption改变时,Button1.caption就不会跟着改变了。(见TControlActionLink.IsCaptionLinked 函数)
Delphi里如果你的Action和Button1不在同一个form上,
则打开Button1所在的Form时,button1会触发ActionChange过程。(所以Button1的Caption又被设成'Add')
解决办法:
自定义一个控件,在这个控件上加入你所说的Option属性,重载ActionChange事件。(参照TControl.ActionChange)

控件关于Action的三个重要属性:
GetActionLinkClass;
GetAction;
ActionChange;
你可以Override他们。

 
多谢各位了
 

Similar threads

后退
顶部