anchor.diff:          Str:= Str+IntToStr(Ord((Ctl as TCheckGroup).Checked[k]))+',';
       end;
   
  +    if Ctl is TCheckListBox then
  +    begin
  +      Str:= '';
  +      for k:= 0 to (Ctl as TCheckListBox).Items.Count-1 do
  +        Str:= Str+IntToStr(Ord((Ctl as TCheckListBox).Checked[k]))+',';
  +    end;
  +
       if Result<>'' then Result:= Result+#10;
       Result:= Result+Str;
     end;
   end;
   
   
  -procedure DoSetCheckGroupState(G: TCheckGroup; AValue: string);
  +procedure DoSetCheckGroupState(C: TControl; AValue: string);
   var
     SItem: string;
  -  N: integer;
  -begin
  +  NCount, N: integer;
  +begin
  +  if C is TCheckGroup then NCount:= (C as TCheckGroup).Items.Count else
  +   if C is TCheckListBox then NCount:= (C as TCheckListBox).Items.Count else
  +    exit;
  +
     N:= 0;
     repeat
  -    if N>=G.Items.Count then exit;
  +    if N>=NCount then exit;
       SItem:= SGetItem(AValue);
       if SItem='' then break;
  -    G.Checked[N]:= StrToBool(SItem);
  +
  +    if C is TCheckGroup then (C as TCheckGroup).Checked[N]:= StrToBool(SItem);
  +    if C is TCheckListBox then (C as TCheckListBox).Checked[N]:= StrToBool(SItem);
  +
       Inc(N);
     until false;
   end;
  
positive.code:         if Ctl is TMemo then (Ctl as TMemo).Lines.Add(SListItem);
          if Ctl is TCheckGroup then (Ctl as TCheckGroup).Items.Add(SListItem);
          if Ctl is TRadioGroup then (Ctl as TRadioGroup).Items.Add(SListItem);
        until false;
        Continue;
      end;
  
negative.code: 
  uses
    Classes, SysUtils, Graphics, Controls, StdCtrls, ExtCtrls, Forms,
    CheckLst,
    ATStringProc;
  
  procedure DoDialogCustom(const ATitle: string; ASizeX, ASizeY: integer;
  