Delphi XE2 之 FireMonkey 入门,3 - 关于 TPosition

把 FireMonkey 简称为 FM 吧. FM 的窗体继续使用 Left、Top 属性, 但更多控件不是了.


//FM 控件的位置控制不再是 Left、Top, 取而代之的是 Position 属性
procedure TForm1.Button1Click(Sender: TObject);
begin
  Rectangle1.Position.X := Rectangle1.Position.X + 10;
  Rectangle1.Position.Y := Rectangle1.Position.Y + 10;
end;

//TPosition 是类
procedure TForm1.Button2Click(Sender: TObject);
var
  posObj: TPosition;
begin
  posObj := TPosition.Create(TPointF.Create(10, 10));
  Rectangle1.Position.Assign(posObj);
  posObj.Free;
end;

//TPosition.Point 是 TPointF 类型的结构
procedure TForm1.Button3Click(Sender: TObject);
begin
  Rectangle1.Position.Point := TPointF.Create(50, 50);
end;

//TPointF 结构也拥有许多方便的方法和运算符重载
procedure TForm1.Button4Click(Sender: TObject);
var
  ptf: TPointF;
begin
  ptf.X := ClientWidth / 2;
  ptf.Y := ClientHeight / 2;
  ptf.Offset(-Rectangle1.Width / 2, -Rectangle1.Height / 2);
  Rectangle1.Position.Point := ptf;
end;

//TVector 是包含三个元素的结构体, TPosition 可以直接使用其前两个数据
procedure TForm1.Button5Click(Sender: TObject);
var
  vector: TVector;
begin
  vector.X := ClientWidth - Rectangle1.Width;
  vector.Y := ClientHeight - Rectangle1.Height;
//  vector.W := 0.0;
  Rectangle1.Position.Vector := vector;
end;