2017-05-20 11 views
1

私はFiremonkey:正しいラベルを右揃えにするにはどうすればいいですか?

RectangleCont.beginUpdate; 

myText1 := TText.Create(RectangleCont); 
myText1.parent := RectangleCont; 
myText1.text := 'a long text'; 
myText1.Position.x := RectangleCont.width - myText1.width; // 150px for exemple 
myText1.align := TalignLayout.right; 

myText2 := TText.Create(RectangleCont); 
myText2.parent := RectangleCont; 
myText2.text := 'OK'; 
myText2.Position.x := RectangleCont.width - myText1.width - myText2.width; // 50px for exemple 
myText2.align := TalignLayout.right; 

myText3 := TText.Create(RectangleCont); 
myText3.parent := RectangleCont; 
myText3.text := 'OK'; 
myText3.Position.x := RectangleCont.width - myText1.width - myText2.width - myText3.width; // 0px for exemple 
myText3.align := TalignLayout.right; 

RectangleCont.EndUpdate; 

をすれば、私は<myText1><myText3><myText2>代わりの<myText3><myText2><myText1>

があります:私はmyText1.textに短いテキストを置けば、それは正しく動作します。

回避策はありますか?

+0

'myText1.alignを使用してみてください: = TAlignLayout.MostRight' –

+0

また、自動配置がそれを無効にするため、設定位置は無意味です。 –

+0

はい、TAlignLayout.MostRightについて知っていますが、3つのテキストがある場合はどうなりますか? myText1、myText2、myText3?通常の世界の設定位置では、コントロールの元の位置に関して整列を行わなければならないので、通常通り(通常の場合(そうだと思いますが、それ以外はデルファイの大きなミスだと思います) – loki

答えて

1

デルファイAlignプロパティは、ほとんどの状況に適していますが、あなたはより多くの希少なニーズを持っている場合、あなた自身のサイズ変更イベントを記述することは難しいことではありません。単純に(私が何かを忘れてしまった場合には、それがテストされていないが、私はあなたのアイデアを得ると思います)、このコードを使用する代わりに、あなたのコード内でAlignPositionプロパティを設定スキップ、および:

... 
RectangleCont.OnResize := DoResizeRectangle; 
... 


procedure TMainForm.DoResizeRectangle(aSender: TObject); 
var lParent: TControl; 
begin 
    lParent := TControl(aSender); 
    myText1.Height := lParent.Height; 
    myText2.Height := lParent.Height; 
    myText3.Height := lParent.Height; 
    myText1.Position.Point := PointF(lParent.Width-myText1.Width, 0); 
    myText2.Position.Point := PointF(myText1.Position.X-myText2.Width, 0); 
    myText3.Position.Point := PointF(myText2.Position.X-myText3.Width, 0); 
end; 
-1
myText1.align := TalignLayout.left; 
myText2.align := TalignLayout.right; 
myText1.align := TalignLayout.right; 
+0

いいえ、これは動作しません、コンテナはbeginupdateにあるので – loki

関連する問題