anchor.diff:  
   
   procedure DoSetListviewState(C: TListView; SValue: string);
  +// index;check0,check1,
   var
     N: integer;
     SItem: string;
   begin
  -  if not C.Checkboxes then
  -  begin
  -    N:= StrToIntDef(SValue, 0);
  -    if (N>=0) and (N<C.Items.Count) then
  -      C.ItemFocused:= C.Items[N];
  -  end
  -  else
  +  SItem:= SGetItem(SValue, ';');
  +  N:= StrToIntDef(SItem, 0);
  +  if (N>=0) and (N<C.Items.Count) then
  +    C.ItemFocused:= C.Items[N];
  +
  +  if C.Checkboxes then
     begin
       N:= 0;
       repeat
  
positive.code:       C.Items[N].Checked:= StrToBool(SItem);
        Inc(N);
      until false;
      C.ItemFocused:= C.Items[0];
    end;
  end;
  
  
  function DoGetListviewState(C: TListView): string;
  var
    i: integer;
  begin
    if not C.Checkboxes then
      Result:= IntToStr(C.ItemIndex)
    else
    begin
      Result:= '';
      for i:= 0 to C.Items.Count-1 do
        Result:= Result+IntToStr(Ord(C.Items[i].Checked))+',';
    end;
  
  end;
  
  
  procedure DoAddControl(AForm: TForm; ATextItems: string);
  var
    SNameValue, SName, SValue, SListItem: string;
    NX1, NX2, NY1, NY2, N: integer;
    Ctl, CtlPrev: TControl;
  begin
    Ctl:= nil;
  
negative.code:   until false;
  end;
  
  procedure DoSetCheckgroupState(C: TCheckGroup; AValue: string);
  var
    SItem: string;
    N: integer;
  begin
    N:= 0;
    repeat
      if N>=C.Items.Count then exit;
      SItem:= SGetItem(AValue);
      if SItem='' then break;
      C.Checked[N]:= StrToBool(SItem);
      Inc(N);
    until false;
  end;
  
  procedure DoSetChecklistboxState(C: TCheckListBox; AValue: string);
  var
    SItem: string;
    N: integer;
  begin
    C.ItemIndex:= StrToIntDef(SGetItem(AValue, ';'), 0);
  
    N:= 0;
    repeat
      if N>=C.Items.Count then exit;
      SItem:= SGetItem(AValue);
      if SItem='' then break;
      C.Checked[N]:= StrToBool(SItem);
      Inc(N);
    until false;
  end;
  