dataEvent method

void dataEvent(
  1. TDataEvent event,
  2. dynamic info
)

Implementation

void dataEvent(TDataEvent event, dynamic info) {
  void handleFieldChange(TField aField) {
    if (aField.fieldKind == TFieldKind.fkData ||
        aField.fieldKind == TFieldKind.fkInternalCalc) {
      setModified(true);
    }
    if (state != TDataSetState.dsSetKey) {
      if (aField.fieldKind == TFieldKind.fkData) {
        if (_internalCalcFields) {
          refreshInternalCalcFields(activeBuffer()!);
        } else if (autoCalcFields && _calcFieldsSize != 0) {
          calculateFields(activeBuffer()!);
        }
      }
      aField.change();
    }
  }

  void handleScrollOrChange() {
    if (state != TDataSetState.dsInsert) updateCursorPos();
  }

  switch (event) {
    case TDataEvent.deFieldChange:
      handleFieldChange(info as TField);
      break;
    case TDataEvent.deDataSetChange:
    case TDataEvent.deDataSetScroll:
      handleScrollOrChange();
      break;
    case TDataEvent.deLayoutChange:
      _enableControlsEvent = TDataEvent.deLayoutChange;
      break;
    default:
      break;
  }

  if (!controlsDisabled() && _state != TDataSetState.dsBlockRead) {
    for (var i = 0; i < myDataSourceCount; i++) {
      myDataSources(i).processEvent(event, info);
    }
  }
}