anchor.diff:      if (Components[i] is TfpgWidget) and (TfpgWidget(Components[i]).Parent = self) then
         TfpgWidget(Components[i]).FormDesigner := AValue;
     end;
  +end;
  +
  +procedure TfpgWidget.SetAlign(const AValue: TAlign);
  +begin
  +  if FAlign = AValue then
  +    Exit;
  +  FAlign := AValue;
  +  Realign;
   end;
   
   procedure TfpgWidget.SetVisible(const AValue: boolean);
  
positive.code:     Result := FocusRootWidget;
      while (Result <> nil) and (Result.ActiveWidget <> nil) do
        Result := Result.ActiveWidget;
    end;
  end;
  
  
negative.code:     MoveAndResize(FLeft + dx, FTop + dy, FWidth + dw, FHeight + dh);
  end;
  
  procedure TfpgWidget.DoAlignment;
  var
    w: TfpgWidget;
    n: integer;
  begin
    // and process this list in order
    for n := 0 to alist.Count - 1 do
    begin
      w := TfpgWidget(alist[n]);
      case w.Align of
        alTop:
          begin
            w.MoveAndResize(FAlignRect.Left, FAlignRect.Top, FAlignRect.Width, w.Height);
  