//--------------------------------------------------- public void InsertBefore(int nIndex) { if (!CanAddNew()) { return; } if (nIndex >= m_listeControlsUtiles.Count - 1) { return; } CControlePrevisionOperation ctrl = GetControle(nIndex); if (ctrl.TypeOperation == null) { return; } int nNiveau = ctrl.TypeOperation.Niveau; m_panelControles.SuspendDrawing(); ctrl = GetNewControle(nIndex); ctrl.InitControle(null, nIndex, nNiveau, false); ReordonneeTout(); m_panelControles.ResumeDrawing(); m_panelControles.Visible = false; m_panelControles.Visible = true; ctrl.Focus(); }
public void Init(IElementAOperationPrevisionnelle element) { Visible = false; m_panelControles.SuspendDrawing(); m_elementEdite = element; foreach (Control ctrl in m_listeControlsUtiles) { ctrl.Visible = false; ((CControlePrevisionOperation)ctrl).Operation = null; } m_listeControlesReserve.AddRange(m_listeControlsUtiles); m_listeControlsUtiles.Clear(); CListeObjetsDonnees liste = m_elementEdite.Operations; liste.Filtre = new CFiltreData(COperation.c_champIdOpParente + " is null"); int nIndex = 0; foreach (COperation donnee in liste) { AddOperation(donnee, ref nIndex, false); } if (m_listeControlsUtiles.Count == 0 && m_gestionnaireModeEdition.ModeEdition) { CControlePrevisionOperation ctrl = GetNewControle(0); ctrl.InitControle(null, 0, 0, true); } ReordonneeTout(); RecalcSize(); m_panelControles.ResumeDrawing(); Visible = true; }
public bool GoUp(int nIndex, string strNomControle) { if (nIndex - 1 >= 0) { CControlePrevisionOperation ctrl = GetControle(nIndex - 1); return(ctrl.FocusOn(strNomControle)); } return(false); }
public bool GoDown(int nIndex, string strNomControle) { if (nIndex + 1 < m_listeControlsUtiles.Count) { CControlePrevisionOperation ctrl = GetControle(nIndex + 1); return(ctrl.FocusOn(strNomControle)); } return(false); }
//----------------------------------------- /// <summary> /// Retourne le type de donnée correspondant au niveau demandé pour l'index de controle demandé /// </summary> /// <param name="nNiveau"></param> /// <param name="nIndexControle"></param> public CTypeOperation GetTypeDonneeNiveau(int nNiveau, int nIndexControle) { for (int nCtrl = nIndexControle - 1; nCtrl >= 0; nCtrl--) { if (nCtrl < m_listeControlsUtiles.Count - 1) { CControlePrevisionOperation ctrl = (CControlePrevisionOperation)m_listeControlsUtiles[nCtrl]; CTypeOperation tdq = ctrl.TypeOperation; if (tdq != null && tdq.Niveau == nNiveau) { return(tdq); } } } return(null); }
//---------------------------------------------------------- public bool CanChangeNiveau(int nIndex, int nNiveauDemande) { if (nNiveauDemande < 0) { return(false); } CControlePrevisionOperation ctrlPrecedent = null, ctrlSuivant = null; if (nIndex == 0) { return(false); } ctrlPrecedent = (CControlePrevisionOperation)m_listeControlsUtiles[nIndex - 1]; /*if (ctrlPrecedent != null && ctrlPrecedent.TypeOperation != null && * ctrlPrecedent.TypeOperation.TypesOperationsFilles.Count == 0) * return false;*/ if (nIndex < m_listeControlsUtiles.Count - 1) { ctrlSuivant = (CControlePrevisionOperation)m_listeControlsUtiles[nIndex + 1]; } bool bOkPourPrecedent = nNiveauDemande <= ctrlPrecedent.TypeOperation.Niveau + 1; //Dernier contrôle ? if (nIndex >= m_listeControlsUtiles.Count - 1) { return(bOkPourPrecedent); } //Regarde le niveau du controle suivant if (ctrlSuivant.TypeOperation == null) { return(bOkPourPrecedent); } if (ctrlSuivant.TypeOperation.Niveau <= nNiveauDemande) //fils de celui qui veut changer { return(bOkPourPrecedent); } return(false); }
//------------------------------------------------------------------------------------------ public CControlePrevisionOperation GetControleNiveauParent(CControlePrevisionOperation controleFils) { CControlePrevisionOperation ctrlParent = null; foreach (CControlePrevisionOperation ctrl in m_listeControlsUtiles) { if (ctrl.Niveau == controleFils.Niveau - 1) { ctrlParent = ctrl; } if (ctrl == controleFils) { return(ctrlParent); } } return(null); }
//------------------------------------------------------------------------------------ private void AddOperation(COperation operation, ref int nIndex, bool bRecalcSize) { bool bEntete = m_panelControles.Controls.Count == 0; CControlePrevisionOperation ctrl = GetNewControle(nIndex); ctrl.Visible = true; ctrl.InitControle(operation, nIndex, operation.TypeOperation.Niveau, bEntete); nIndex++; foreach (COperation operationFille in operation.OperationsFilles) { AddOperation(operationFille, ref nIndex, false); } if (bRecalcSize) { RecalcSize(); } }
//----------------------------------------- private CControlePrevisionOperation GetNewControle(int nIndex) { CControlePrevisionOperation ctrl = null; if (m_listeControlesReserve.Count == 0) { ctrl = new CControlePrevisionOperation(this); } else { ctrl = (CControlePrevisionOperation)m_listeControlesReserve[0]; ctrl.Operation = null; } ctrl.Parent = m_panelControles; ctrl.Visible = true; ctrl.Dock = DockStyle.Top; ctrl.TabIndex = nIndex; m_listeControlesReserve.Remove(ctrl); if (nIndex < m_listeControlsUtiles.Count) { m_listeControlsUtiles.Insert(nIndex, ctrl); } else { m_listeControlsUtiles.Add(ctrl); } //Décale tous les controles suivants for (int nCtrl = nIndex + 1; nCtrl < m_listeControlsUtiles.Count; nCtrl++) { CControlePrevisionOperation ctrlApres = (CControlePrevisionOperation)m_listeControlsUtiles[nCtrl]; ctrlApres.Index = nCtrl; } ReordonneeTout(); ctrl.LockEdition = !m_gestionnaireModeEdition.ModeEdition; ctrl.BackColor = m_panelControles.BackColor; ctrl.SizeChanged += new EventHandler(ctrlOperation_SizeChanged); return(ctrl); }
//Appelé lorsqu'un élément change de type de donnée public void OnChangeTypeDonnee(int nIndex, CTypeOperation typeDonnee) { if (nIndex > m_listeControlsUtiles.Count - 1) { return; } CControlePrevisionOperation ctrl = (CControlePrevisionOperation)m_listeControlsUtiles[nIndex]; int nNiveau = ctrl.Niveau; nIndex++; while (nIndex < m_listeControlsUtiles.Count) { CControlePrevisionOperation ctrlSuivant = (CControlePrevisionOperation)m_listeControlsUtiles[nIndex]; if (ctrlSuivant.Niveau <= nNiveau) { return; } if (ctrlSuivant.Niveau == nNiveau + 1) { ctrlSuivant.OnChangeTypeParent(typeDonnee); } nIndex++; } }
//--------------------------------------------------- public void InsertAfter(int nIndex) { if (!CanAddNew()) { return; } CControlePrevisionOperation ctrl = GetControle(nIndex); if (ctrl.TypeOperation == null) { return; } int nNiveau = ctrl.TypeOperation.Niveau; m_panelControles.SuspendDrawing(); ctrl = GetNewControle(nIndex + 1); ctrl.InitControle(null, nIndex + 1, nNiveau, false); ReordonneeTout(); m_panelControles.ResumeDrawing(); m_panelControles.Visible = false; m_panelControles.Visible = true; ctrl.Focus(); RecalcSize(); }
//--------------------------------------------------- public bool RemoveDonnee(CControlePrevisionOperation controle) { CResultAErreur result = CResultAErreur.True; if (controle.Operation != null) { result = controle.Operation.CanDelete(); if (!result) { CFormAlerte.Afficher(result.Erreur); return(false); } } int nNiveau = controle.Niveau; int nIndex = controle.Index; CControlePrevisionOperation ctrlSuivant = null; if (nIndex + 1 < m_listeControlsUtiles.Count) { ctrlSuivant = (CControlePrevisionOperation)m_listeControlsUtiles[nIndex + 1]; } while (ctrlSuivant != null && ctrlSuivant.Niveau > nNiveau) { if (!RemoveDonnee(ctrlSuivant)) { return(false); } if (nIndex + 1 < m_listeControlsUtiles.Count) { ctrlSuivant = (CControlePrevisionOperation)m_listeControlsUtiles[nIndex + 1]; } else { ctrlSuivant = null; } } if (controle.Operation != null) { result = controle.Operation.Delete(); if (!result) { return(false); } } m_listeControlsUtiles.Remove(controle); m_listeControlesReserve.Add(controle); nIndex = controle.Index; for (int nChange = nIndex; nChange < m_listeControlsUtiles.Count; nChange++) { ((CControlePrevisionOperation)m_listeControlsUtiles[nChange]).Index = nIndex; nIndex++; } controle.Operation = null; controle.Hide(); //s'il n'y a plus de contrôle, il faut en ajouter 1 !!! if (m_listeControlsUtiles.Count == 0 && m_gestionnaireModeEdition.ModeEdition) { CControlePrevisionOperation ctrl = GetNewControle(0); ctrl.InitControle(null, 0, 0, true); } RecalcSize(); return(true); }