anchor.diff:          dw := 0;
           dh := 0;
   
  -        if (anLeft in wg.Anchors) and (anRight in wg.Anchors) then
  -          dw := dwidth
  -        else if anRight in wg.Anchors then
  -          dx := dwidth;
  -
  -        if (anTop in wg.Anchors) and (anBottom in wg.Anchors) then
  -          dh := dheight
  -        else if anBottom in wg.Anchors then
  -          dy := dheight;
  +        if (anRight in wg.Anchors) then
  +          if (anLeft in wg.Anchors) then
  +            dw := dwidth
  +          else
  +            dx := dwidth
  +        else if not (anLeft in wg.Anchors) then
  +          dx := (dwidth div 2);
  +
  +        if (anBottom in wg.Anchors) then
  +          if (anTop in wg.Anchors) then
  +            dh := dheight
  +          else
  +            dy := dheight
  +        else if not (anTop in wg.Anchors) then
  +          dy := (dheight div 2);
   
           wg.MoveAndResizeBy(dx, dy, dw, dh);
         end;
  
positive.code:     if (Components[n] is TfpgWidget) then
      begin
        wg := TfpgWidget(Components[n]);
        if (wg.FAlign = alNone) and
            ((anBottom in wg.Anchors) or (anRight in wg.Anchors)) then
        begin
          // we must alter the window
          dx := 0;
  
negative.code:     { Is the widget allowed to receive keyboard focus. }
      property    Focusable: boolean read FFocusable write FFocusable default False;
      property    Focused: boolean read FFocused write FFocused default False;
      property    Anchors: TAnchors read FAnchors write FAnchors default [anLeft, anTop];
      property    Align: TAlign read FAlign write FAlign;
      property    Hint: TfpgString read GetHint write SetHint;
      property    ShowHint: boolean read FShowHint write SetShowHint stored IsShowHintStored;
  