To do this by anchoring alone (i. e. not manually calculating and setting a value for Left) you have to write this (setting two properties of AnchorSideRight):
procedure TForm1.FormCreate(Sender: TObject);
var
l: TLabel;
begin
l := TLabel.Create(self);
l.Caption := 'xxxx';
l.Top := 50;
l.Color := clYellow;
l.AutoSize := False;
l.Anchors := [akRight];
l.AnchorSideRight.Control := Self;
l.AnchorSideRight.Side := asrRight;
l.Parent := Self;
Form1.Caption := IntToStr(self.Width) + '|' + IntToStr(l.Width) + '|' + IntToStr(l.Left);
end;
You'll note that anchoring works by 'sticking' controls to other controls, not by setting Top, Left values.
Top is set in this code (the label's top side is not anchored).
Left is not set in this code, either by the programmer, or by the anchoring code. Hence the form Caption shows the value of Left unaltered from 0 (the value all integers are initialised to when the class is created), even though the control is placed well away from the Left of the form.
BTW, it is better to set the Parent property last. This avoids various assignments cascading unnecessarily with every property change made after Parent is set.