anchor.diff:    DoEvent(IdControl, Props.FEventOnEditorCaret, AppVariantNil);
   end;
   
  -function AppVariant_KeyAndShift(AKey: word; AShift: TShiftState): TAppVariant;
  -begin
  -  FillChar(Result, SizeOf(Result), 0);
  -  Result.Typ:= avrTuple;
  -  Result.DictLen:= 2;
  -
  -  Result.DictItems[0].Typ:= avdInt;
  -  Result.DictItems[0].Int:= AKey;
  -
  -  Result.DictItems[1].Typ:= avdStr;
  -  Result.DictItems[1].Str:= ConvertShiftStateToString(AShift);
  -end;
  -
   procedure TFormDummy.DoOnEditorKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
   var
     Props: TAppControlProps;
  
positive.code:     procedure DoOnFormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
      procedure DoOnFormClose(Sender: TObject; var CloseAction: TCloseAction);
      procedure DoOnFormCloseQuery(Sender: TObject; var CanClose: boolean);
      function _MouseEventDataObject(AButton: TMouseButton; AShift: TShiftState; AX,
        AY: Integer): TAppVariant;
      procedure _HandleClickEvent(Sender: TObject; ADblClick: boolean);
      procedure _HandleMouseEvent(Sender: TObject;
        const AEventKind: TAppCtlMouseEvent; const AData: TAppVariant);
  
negative.code: begin
    Props:= TAppControlProps((Sender as TControl).Tag);
    IdControl:= FindControlIndexByOurObject(Sender);
    Data:= AppVariant_KeyData(Key, Shift);
    if not DoEvent(IdControl, Props.FEventOnEditorKeyDown, Data) then
      Key:= 0;
  end;
  