anchor.diff:    until false;
   end;
   
  +
  +procedure DoControl_SetPosFromString(C: TControl; S: string);
  +var
  +  NX1, NY1, NX2, NY2: integer;
  +begin
  +  NX1:= StrToIntDef(SGetItem(S, ','), -1);
  +  NY1:= StrToIntDef(SGetItem(S, ','), -1);
  +  NX2:= StrToIntDef(SGetItem(S, ','), -1);
  +  NY2:= StrToIntDef(SGetItem(S, ','), -1);
  +  if NX1<0 then exit;
  +  if NX2<0 then exit;
  +  if NY1<0 then exit;
  +  if NY2<0 then exit;
  +  C.Left:= NX1;
  +  C.Width:= NX2-NX1;
  +  C.Top:= NY1;
  +  if not DoControl_IsAutoHeight(C) then
  +    C.Height:= NY2-NY1;
  +end;
  +
  +
  +procedure DoControl_SetHintFromString(C: TControl; const S: string);
  +begin
  +  //QT cannot handle #13 in hint
  +  C.Hint:= StringReplace(S, #13, #10, [rfReplaceAll]);
  +end;
  +
  +
  +procedure DoControl_SetStateFromString(C: TControl; const S: string);
  +begin
  +  if C is TCheckBox then
  +  begin
  +    DoControl_SetState_Checkbox(C as TCheckbox, S);
  +    exit
  +  end;
  +  if C is TToggleBox then
  +  begin
  +    (C as TToggleBox).Checked:= StrToBool(S);
  +    exit
  +  end;
  +  if C is TRadioButton then
  +  begin
  +    (C as TRadioButton).Checked:= StrToBool(S);
  +    exit
  +  end;
  +  if C is TEdit then
  +  begin
  +    (C as TEdit).Text:= S;
  +    exit
  +  end;
  +  if C is TComboBox then
  +  begin
  +    DoControl_SetState_Combobox(C as TCombobox, S);
  +    exit
  +  end;
  +  if C is TListBox then
  +  begin
  +    DoControl_SetState_Listbox(C as TListbox, S);
  +    exit
  +  end;
  +  if C is TRadioGroup then
  +  begin
  +    DoControl_SetState_RadioGroup(C as TRadioGroup, S);
  +    exit
  +  end;
  +  if C is TCheckGroup then
  +  begin
  +    DoControl_SetState_CheckGroup(C as TCheckGroup, S);
  +    exit
  +  end;
  +  if C is TCheckListBox then
  +  begin
  +    DoControl_SetState_CheckListbox(C as TCheckListBox, S);
  +    exit
  +  end;
  +  if C is TMemo then
  +  begin
  +    DoControl_SetState_Memo(C as TMemo, S);
  +    exit
  +  end;
  +  if C is TSpinEdit then
  +  begin
  +    DoControl_SetState_SpinEdit(C as TSpinEdit, S);
  +    exit
  +  end;
  +  if C is TListView then
  +  begin
  +    DoControl_SetState_Listview(C as TListView, S);
  +    exit
  +  end;
  +  if C is TTabControl then
  +  begin
  +    DoControl_SetState_TabControl(C as TTabControl, S);
  +    exit
  +  end;
  +end;
  +
  +
   procedure DoForm_Scale(F: TForm);
   var
     PrevPPI, NewPPI: integer;
  
positive.code: 
  procedure DoForm_AddControl(AForm: TForm; ATextItems: string; ADummy: TDummyClass);
  var
    SNameValue, SName, SValue, SListItem: string;
    NX1, NX2, NY1, NY2: integer;
    Ctl, CtlPrev: TControl;
  begin
    Ctl:= nil;
  
negative.code:     //-------hint
      if SName='hint' then
      begin
        DoControl_SetHintFromString(Ctl, SValue);
        Continue;
      end;
  
      //-------act
      if SName='act' then
      begin
        if StrToBool(SValue) then
          Ctl.Tag:= Dummy_TagActive;
        Continue;
      end;
  