//------------------------------------------------------------------------------------------ public CResultAErreur Execute(CContexteExecutionMacro contexteExecution) { CResultAErreur result = CResultAErreur.True; //Initialise les valeurs des variables foreach (KeyValuePair <string, CDbKey> kv in m_dicVariableToInitialId) { IVariableDynamique var = GetVariable(kv.Key); if (var != null && kv.Value != null) { Type tpObjet = var.TypeDonnee.TypeDotNetNatif; if (typeof(CObjetDonneeAIdNumerique).IsAssignableFrom(tpObjet)) { try { CObjetDonneeAIdNumerique obj = Activator.CreateInstance(tpObjet, new object[] { contexteExecution.ContexteDonnee }) as CObjetDonneeAIdNumerique; if (obj != null && obj.ReadIfExists(kv.Value)) { SetValeurChamp(kv.Key, obj); } } catch { } } } } IVariableDynamique variable = VariableCible; if (variable == null) { result.EmpileErreur("#Macro target is not specified"); return(result); } if (contexteExecution.Cible != null && variable.TypeDonnee.TypeDotNetNatif != contexteExecution.Cible.GetType()) { result.EmpileErreur("#Macro must be applied on " + DynamicClassAttribute.GetNomConvivial(variable.TypeDonnee.TypeDotNetNatif)); return(result); } SetValeurChamp(variable.IdVariable, contexteExecution.Cible); if (Formulaire != null) { if (CFormFormulairePopup.EditeElement(Formulaire, this, "MACRO")) { foreach (CMacroObjet macObj in Objets) { macObj.Execute(contexteExecution); } } } return(result); }
//----------------------------------------------------- internal CResultAErreur Execute(CContexteExecutionMacro contexteExecution) { CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(Macro); CObjetDonneeAIdNumerique cible = null; CResultAErreur result = CResultAErreur.True; if (FormuleCondition != null) { result = FormuleCondition.Eval(ctx); if (!result) { return(result); } if (!(result.Data is bool)) { return(result); } if (!(bool)result.Data) { return(result); } } switch (TypeOperation.Code) { case CTypeOperationSurObjet.TypeOperation.Ajout: CObjetDonneeAIdNumeriqueAuto objAuto = Activator.CreateInstance(m_typeObjet, new object[] { contexteExecution.ContexteDonnee }) as CObjetDonneeAIdNumeriqueAuto; if (objAuto != null) { objAuto.CreateNewInCurrentContexte(); } cible = objAuto; break; case CTypeOperationSurObjet.TypeOperation.Aucune: break; case CTypeOperationSurObjet.TypeOperation.Modification: case CTypeOperationSurObjet.TypeOperation.Suppression: result = FormuleSelectionObjet.Eval(ctx); if (!result) { return(result); } if (result) { cible = result.Data as CObjetDonneeAIdNumerique; } break; default: break; } if (cible != null) { Macro.SetValeurChamp(IdVariableAssociee, cible); } Macro.SetValeurChamp(Macro.VariableCurrentElement, cible); foreach (CMacroObjetValeur valeur in Valeurs) { valeur.Execute(cible); } return(result); }