//------------------------------------------------------------ private CControleEditeLigneCommande AddControleLigne(CLigneCommande ligne) { CControleEditeLigneCommande ctrl = null; if (m_controlesReserve.Count() != 0) { ctrl = m_controlesReserve.Pop(); } else { ctrl = new CControleEditeLigneCommande(); m_panelLignes.Controls.Add(ctrl); m_extModeEdition.SetModeEdition(ctrl, sc2i.win32.common.TypeModeEdition.EnableSurEdition); ctrl.OnAddLine += new EventHandler(ctrl_OnAddLine); ctrl.OnDelete += new EventHandler(ctrl_OnDelete); ctrl.OnGoDown += new EventHandler(ctrl_OnGoDown); ctrl.OnGoUp += new EventHandler(ctrl_OnGoUp); } ctrl.BringToFront(); ctrl.Dock = DockStyle.Top; ctrl.LockEdition = !m_extModeEdition.ModeEdition; ctrl.FournisseurPourFiltre = m_fournisseurPourFiltre; ctrl.Init(ligne, ligne.Numero == 0); ctrl.Visible = true; return(ctrl); }
//------------------------------------------------------------ void ctrl_OnGoDown(object sender, EventArgs e) { CControleEditeLigneCommande ctrl = sender as CControleEditeLigneCommande; if (ctrl == null) { return; } CLigneCommande ligne = ctrl.Ligne; if (ligne.Numero < m_commande.Lignes.Count - 1) { RenumerotteLignes(ligne.Numero + 1, ligne.Numero + 1, -1); ligne.Numero++; } SortControls(); }
//------------------------------------------------------------ void ctrl_OnGoUp(object sender, EventArgs e) { CControleEditeLigneCommande ctrl = sender as CControleEditeLigneCommande; if (ctrl == null) { return; } CLigneCommande ligne = ctrl.Ligne; if (ligne.Numero > 0) { RenumerotteLignes(ligne.Numero - 1, ligne.Numero - 1, 1); ligne.Numero--; } SortControls(); }
//------------------------------------------------------------ void ctrl_OnAddLine(object sender, EventArgs e) { CControleEditeLigneCommande ctrl = sender as CControleEditeLigneCommande; if (ctrl == null) { return; } CLigneCommande ligneRef = ctrl.Ligne; RenumerotteLignes(ligneRef.Numero + 1, m_commande.Lignes.Count - 1, 1); CLigneCommande ligne = new CLigneCommande(m_commande.ContexteDonnee); ligne.Commande = m_commande; ligne.Numero = ligneRef.Numero + 1; AddControleLigne(ligne); SortControls(); }
//------------------------------------------------------------------ public void Init(CCommande commande) { m_commande = commande; m_panelLignes.Visible = false; m_panelLignes.SuspendDrawing(); foreach (CControleEditeLigneCommande ctrl in ControlesCommande) { ctrl.Visible = false; m_controlesReserve.Push(ctrl); } bool bIsFirst = true; foreach (CLigneCommande ligne in m_commande.Lignes) { CControleEditeLigneCommande ctrl = AddControleLigne(ligne); ctrl.IsFirst = bIsFirst; bIsFirst = false; } m_panelLignes.ResumeDrawing(); m_panelLignes.Visible = true; }
//------------------------------------------------------------ void ctrl_OnDelete(object sender, EventArgs e) { CControleEditeLigneCommande ctrl = sender as CControleEditeLigneCommande; if (ctrl == null) { return; } CLigneCommande ligne = ctrl.Ligne; int nNumero = ligne.Numero; RenumerotteLignes(nNumero, m_commande.Lignes.Count - 1, -1); CResultAErreur result = ligne.Delete(true); if (!result) { CFormAlerte.Afficher(result.Erreur); return; } ctrl.Visible = false; m_controlesReserve.Push(ctrl); }