名前 題名 ▼ Konnoyaさん > こんばんは! > FireMonkeyで試行錯誤状態の私がハマった出来事を書きます。 > マヌケな話です(汗 > > TLayout に 複数の TRectangle を 左寄せ で追加してたのですが、 > IDE上で1つずつ Align = Left などと設定を行う事で、 > 操作した順番に左寄せで並ぶのですが、 > コード上から動的生成を行って同様のAlignプロパティを設定しても > 生成した順番に並ばない!? > > 【FMXコード】 > unit Unit1; > > interface > > uses > System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, > FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects, > System.UIConsts, FMX.Layouts; > > type > TForm1 = class( TForm ) > procedure FormCreate ( Sender : TObject ); > procedure CreateRectangle( Color : Integer; Align : TAlignLayout ); > private > { private 宣言 } > public > { public 宣言 } > end; > > var > Form1: TForm1; > > implementation > > {$R *.fmx} > > procedure TForm1.FormCreate( Sender : TObject ); > > begin > // Rectangleを左寄せで5個追加 > CreateRectangle( claBlue , TAlignLayout.Left ); // 青 > CreateRectangle( claRed , TAlignLayout.Left ); // 赤 > CreateRectangle( claGreen , TAlignLayout.Left ); // 緑 > CreateRectangle( claYellow, TAlignLayout.Left ); // 黄 > CreateRectangle( claPurple, TAlignLayout.Left ); // 紫 > end; > > procedure TForm1.CreateRectangle( Color : Integer; Align : TAlignLayout ); > > var > RectAngle : TRectangle; > > begin > RectAngle := TRectAngle.Create( Self ); > RectAngle.Parent := Self; > RectAngle.Fill.Color := Color; > RectAngle.Width := 100; > RectAngle.Align := TAlignLayout.Left; > RectAngle.Visible := TRUE; > end; > > end. > > 生成して並べた順番は、青、赤、緑、黄、紫のはずですが、 > なぜか下の画像の様になります。 > > これを正しい順序に行うには、Positionプロパティの座標が鍵でした。 > Alignプロパティを設定する前に、 > TTAlignLayout.Left なら、右方向の位置に、 > TAlignLayout.Top なら、下方向の位置に設定しておく事で解決できました。 > > 【FMXコード】 > RectAngle := TRectAngle.Create( Self ); > RectAngle.Parent := Self; > RectAngle.Fill.Color := Color; > RectAngle.Width := 100; > RectAngle.Position.X := Integer( Align = TAlignLayout.Left ) * Self.Width; > RectAngle.Position.Y := Integer( Align = TAlignLayout.Top ) * Self.Height; > RectAngle.Align := TAlignLayout.Left; > RectAngle.Visible := TRUE; > > ※ Mr.XRAY様、投稿番号11212は、途中で送信してしまいました。 > 削除をお願いします。m(_ _)m > GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link