@U.Raabe:
mein Ziel ist es die Actions zur Laufzeit und damit dynamisch zur Actionlist hinzuzufügen.
Ich dachte dies nennt man registrieren.
Wie darf man das RegisterAction sonst verstehen? Wo werden die Actions Registriert wenn nicht in der ActionList?
Man unterscheidet grundsätzlich zwischen einer TAction, bei der das OnUpdate und OnExecute als Event ausgeführt sind, die du in deinem Code wie bei einem OnClick-Event behandelts, und speziellen Actions, von denen man einige in StdActns.pas finden kann (z.B. TFileExit) und die für bestimmte Fälle ein vordefiniertes Verhalten implementieren. Alle diese Actions können zu ActionLists hinzugefügt werden. Das geschieht einfach durch Zuweisung der ActionList auf das entsprechende Property der Action.
Damit diese Actions aber im ActionListEditor der
IDE auftauchen (das was aufgeht, wenn man in der
IDE einen Doppelcklick auf die ActionList macht), müssen sie in der
IDE mit RegisterActions registriert werden. RegisterActions brauchst du also nur, wenn du in einem DesignTime-
Package für die
IDE eine neue ActionKlasse registrieren willst. Zur Runtime brauchst du diese Funktion nicht.
Die Actions aus StdActions werden von den Delphi-Packages bereits registriert. Wenn du mal in der
IDE auf eine ActionList doppelclickst und dann den DropDown-Pfeil beim "Neue Action"-Button anklickst, dann siehst du einen Menüpunkt "Neue Standardaktion". Dahinter verbirgt sich die Liste aller registrierten Standard-Aktionen. Je nach installierten Fremd-Komponenten sind das auch mal durchaus mehr als die Delphi-Standard-Actions.
Also: RegisterActions dient zum Registrieren neuer Aktions-Klassen in der
IDE und ist nur zur Designzeit relevant. Das Hinzufügen einer TAction-Instanz zu einer ActionList geschieht durch Zuweisung des ActionList.Properties der TAction und wird zur Runtime durchgeführt, wenn die ActionList nicht (oder nur teilweise) schon im Designer gefüllt wurde.