Ja, Sie können jede Art von benutzerdefinierter Ausrichtung durchführen. Verwenden Sie einfach die Ereignisse OnAlignInsertBefore() und OnAlignPosition() des Steuerelements. (Diese sind in Delphi 2007 vorhanden, werden aber nicht veröffentlicht, so dass sie nicht auf der Registerkarte "Ereignisse" des Objektinspektors angezeigt werden. Sie können sie dennoch im Code zuweisen. Ich habe die folgenden Prototypen gezeigt. Sie sind in der Hilfedatei unter TAlignInsertBeforeEvent und TAlignPositionEvent, können Sie auch Custom und OnAlignInsertBefore sehen)
TAlignInsertBeforeEvent = function(Sender: TWinControl;
C1, C2: TControl): Boolean of object;
TAlignPositionEvent = procedure(Sender: TWinControl; Control: TControl;
var NewLeft, NewTop, NewWidth, NewHeight: Integer;
var AlignRect: TRect; AlignInfo: TAlignInfo) of object;
Die Dokumentation enthält ziemlich gute Beschreibungen der Parameter für beide Methoden..
In Delphi 2010 werden diese Ereignisse veröffentlicht und auf der Registerkarte "Ereignisse" des Objektinspektors angezeigt.
Ich habe noch nie das Problem gesehen, das Sie haben ... Haben Sie versucht, alle von ihnen auf alNone, Verschieben Sie sie von der rechten Kante, und dann neu einstellen Align: = alRight in der Reihenfolge Sie wollen, dass sie erscheinen?
Das Problem der unterschiedlichen Reihenfolge bei Designtime und Runtime kann durch Manipulation der Sichtbarkeit dieser Kontrollen auftreten –