Execute(
Calculation: IMsMethodCalculation;
Coord: IMsFormulaTransformCoord; Callback: IMsFormulaExecuteCallback);
Calculation. Определяет параметры, необходимые при расчете метода;
Coord. Определяет параметры координаты в переменной, по которой будет производиться расчет;
Callback. Определяет объект для обратной связи при расчете метода.
Метод Execute осуществляет расчет метода.
Для выполнения примера предполагается наличие формы, расположенной на ней кнопки «Button1» и компонента Memo с идентификатором «Memo1». В компоненте «Memo1» должны содержаться параметры модели в виде XML-кода.
Class MsCallbackimpl: Object, IMsFormulaExecuteCallback
Sub ResultMatrix(Matrix: IMatrix; Conditions: IOrmConditions);
Var
Ite: IMatrixIterator;
Begin
Debug.WriteLine("Выполнение.");
Ite := Matrix.CreateIterator;
Ite.Move(IteratorDirection.First);
While Ite.Valid Do
Debug.WriteLine(Ite.Value);
Ite.Move(IteratorDirection.Next);
End While;
End Sub ResultMatrix;
End class MsCallbackimpl;
Class TestForm: Form
Button1: Button;
Memo1: Memo;
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
ActiveMetabase: IMetabase;
Transform: IMsFormulaTransform;
TransformVar: IMsFormulaTransformVariable;
Coord: IMsFormulaTransformCoord;
Slice: IMsFormulaTransformSlice;
Selector: IMsFormulaTransformSelector;
Formula: IMsFormula;
Calcul: IMsMethodCalculation;
Per: IMsModelPeriod;
CallBack: MsCallbackimpl;
XmlNode: IXmlDomElement;
cl: FreeThreadedDOMDocument60;
Begin
ActiveMetabase := MetabaseClass.Active;
cl := New FreeThreadedDOMDocument60.Create;
cl.loadXML(Memo1.Text);
XmlNode := cl.documentElement;
Transform := New MsFormulaTransform.Create(ActiveMetabase);
Transform.LoadFromXml(XmlNode);
TransformVar := Transform.Outputs.Item(0);
Coord := Transform.CreateCoord(TransformVar);
Slice := TransformVar.Slices.Item(0);
Selector := Transform.CreateSelector;
Selector.Slice := Slice;
Formula := Transform.Transform(Selector);
Calcul := Transform.CreateCalculation;
Per := Calcul.Period;
Per.IdentificationStartDate := DateTime.ComposeDay(2000, 1, 1);
Per.IdentificationEndDate := DateTime.ComposeDay(2004, 1, 1);
Per.ForecastStartDate := DateTime.ComposeDay(2005, 1, 1);
Per.ForecastEndDate := DateTime.ComposeDay(2007, 1, 1);
Calcul.CurrentPoint := DateTime.ComposeDay(2005, 1, 1);
CallBack := New MsCallbackimpl.Create;
Formula.Execute(Calcul, Coord, CallBack);
End Sub Button1OnClick;
End Class TestForm;
После выполнения примера, в переменную «Transform» будут загружены параметры модели. Метод модели будет рассчитан.
См. также: