TControl.Alignの使用方法:= alCustom?
質問
簡単な質問。 3つのコンポーネントを持つパネルがあります。それらはすべてAlign:= alRightを持っています。 しかし、問題は実行時にそれらの順序が設計時と同じではないことです。
代わりにalCustomを使用して、注文を右ボーダーに強制できますか? D2007を使用しています。
解決
手元にある問題の多くは明らかにしていませんが、代わりにフローパネルを見てみました。
フローパネルにコントロールをドロップすると、新しい注文プロパティが自動的に「自動的に」表示されます。コントロールの流れを設定できます。コントロール間にスペースが必要な場合は、各コントロールのマージンを設定します。
少し明確化:新しい「order-property」は実際には「ControlIndex」と呼ばれ、オブジェクトインスペクターの下部に表示されます。
他のヒント
はい、任意のタイプのカスタム調整を行うことができます。コントロールのOnAlignInsertBefore()およびOnAlignPosition()イベントを使用するだけです。 (これらはDelphi 2007に存在しますが、公開されていないため、オブジェクトインスペクタの[イベント]タブには表示されません。コードで割り当てることができます。プロトタイプを以下に示します。 TAlignInsertBeforeEventおよびTAlignPositionEvent; CustomAlignInsertBeforeおよびOnAlignInsertBeforeも表示できます。)
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;
ドキュメントには、両方のメソッドのパラメーターについての非常に適切な説明が含まれています。
Delphi 2010では、これらのイベントは公開され、オブジェクトインスペクターの[イベント]タブに表示されます。
しかし、あなたが抱えている問題は一度も見たことがありません...それらのすべてをalNoneに設定し、右端から遠ざけてから、Alignを再設定してみましたか?それらを表示したいですか?
このダウンロードからDemo2をご覧ください。