Re: Action Enabled, ToolButton dagegen nicht
26. Jun 2007, 17:32
Das nachvollziehbar zu machen ist ziemlich schwer, da es in einem sehr umfangreichen Projekt auftritt (wie gesagt, drei voneinander abgeleitete Formulare, die wiederum von weiteren Basisformularen abgeleitet sind).
Ich bin aber inzwischen weitergekommen. Es hat nichts mit den Actions zu tun, sondern die Buttons werden an sich nicht richtig dargestellt - die Actions selbst passen. Auch ohne Action geht es nicht!
Ich weiß auch, woran es liegt: auf der Toolbar befinden sich weitere Toolbuttons. Die werden im FormCreate einer Oberklasse positioniert, und zwar mit .Left := 1000; eine andere sinnvolle Möglichkeit als die Left-Eigenschaft existiert ja nicht. Wenn man das auskommentiert, funktionieren die neu eingeführten Buttons! Allerdings gibt es dann Probleme mit den anderen (alten) Buttons, die teilweise nicht angezeigt werden, obwohl sie aktiv sein müßten. Auch die Positionierung in der unteren Klasse mit passenden Left-Werten (23,46,69 usw.) hilft nicht weiter. (auch Left =1,2,3 reicht nicht für die richtige Positionierung)
Es würde funktionieren, wenn ich auf unterster Ebene im Designer die Left-Eigenschaft einstelle und so die richtige Reihenfolge herstelle. Es wäre nicht tragisch, wenn ich das in jedem anderen Formulare im Projekt, die natürlich alle von denselben Basisformularen abgeleitet werden, auch machen müßte. Jedoch ist das für die Zukunft sehr unsicher. Kommt ein Button dazu, muß immer dran gedacht werden, alle Left-Eigenschaften zu ändern. Mit Left:=1000 (auch wenn das weit außerhalb der Breite der Toolbar ist), war das zumindest immer sichergestellt. Es sollte also auf Ebene der Basisklasse sichergestellt werden, daß bestimmte Toolbuttons immer rechts erscheinen.
Ich dachte daran, diese Toolbuttons in der Oberklasse zur Laufzeit zu erstellen, und zwar z.B. im Formshow, weil das erst nach dem FormCreate der abgeleiteten Klassen ausgeführt wird, wenn die neuen Buttons schon existieren. Die zuletzt erstellten Toolbuttons würden (hoffentlich) rechts hinzugefügt. Geht aber auch nicht. Delphi-Fehlermeldungen, Zugriffsverletzungen usw. waren die Folge.
Hat jemand noch Ideen, wie man prinzipiell vorgehen könnte? Den Buttons eine Tag-Eigenschaft geben, mit hohen Werten, und abhängig davon in abgeleiteten Formularen die Left-Eigenschaft dynamisch berechnen lassen (umpositionieren)?
Vielen Dank im voraus
Irrgärtner
|