質問

簡単な質問。 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をご覧ください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top