void menuNumero_Click(object sender, EventArgs e) { CMenuNumero numero = sender as CMenuNumero; if (m_sourceLienParametre != null && m_destLienParametre != null && numero != null) { m_destLienParametre.SetExterne(numero.Numero, m_sourceLienParametre); OnChangeFormules(); } m_sourceLienParametre = null; m_destLienParametre = null; }
public void menu_Click(object sender, EventArgs e) { CMenuNumero menu = sender as CMenuNumero; if (menu != null) { if (m_sourceLienParametre != null && m_destLienParametre != null) { m_sourceLienParametre.SetExterne(menu.Numero, m_destLienParametre); OnChangeFormules(); } } }
private void ShowInterfaceLienParametre( CRepresentationExpressionGraphique source, CRepresentationExpressionGraphique dest) { Dictionary <int, CMenuNumero> dicMenus = new Dictionary <int, CMenuNumero>(); if (source == null || dest == null) { return; } if (m_menuNumeroParametre.Items.Count == 0) { //Création initiale des sous menus for (int n = 0; n < 20; n++) { CMenuNumero menu = new CMenuNumero(n.ToString(), n); m_menuNumeroParametre.Items.Add(menu); menu.Click += new EventHandler(menuNumero_Click); } } foreach (ToolStripMenuItem item in m_menuNumeroParametre.Items) { CMenuNumero num = item as CMenuNumero; if (num != null) { dicMenus[num.Numero] = num; } } C2iExpressionAnalysable expAn = dest.Formule == null ? null : dest.Formule as C2iExpressionAnalysable; if (expAn != null) { CInfo2iExpression info = null; info = expAn.GetInfos(); CInfo2iDefinitionParametres[] infosParams = info.InfosParametres; for (int n = 0; n < 20; n++) { string strNom = info.GetNomParametre(n); if (strNom.Trim() == "") { dicMenus[n].Visible = false; } else { dicMenus[n].Visible = true; dicMenus[n].Text = strNom; } } sc2i.expression.C2iExpression[] parametres = dest.Formule.Parametres2i; foreach (ToolStripMenuItem item in m_menuNumeroParametre.Items) { int nPos = item.Text.IndexOf('('); if (nPos > 0) { item.Text = item.Text.Substring(0, nPos).Trim(); } CMenuNumero numero = item as CMenuNumero; if (numero != null) { if (numero.Numero < parametres.Length) { sc2i.expression.C2iExpression exp = parametres[numero.Numero]; if (exp != null) { item.Text += " (" + exp.GetString() + ")"; } } } } m_sourceLienParametre = source; m_destLienParametre = dest; m_menuNumeroParametre.Show(Cursor.Position); } }
//----------------------------------------------------------------- public override void OnMouseUpNonStandard(object sender, MouseEventArgs e) { if ((ModeSourisCustom == EModeSourisCustom.LienSequence || ModeSourisCustom == EModeSourisCustom.LienParametre) && e.Button == MouseButtons.Left) { Point ptLogique = GetLogicalPointFromDisplay(new Point(e.X, e.Y)); CRepresentationExpressionGraphique dest = ObjetEdite.SelectionnerElementDuDessus(ptLogique) as CRepresentationExpressionGraphique; if (dest != null && dest != m_expressionStartJoin) { if (dest != null) { bool bTraite = false; if (ModeSourisCustom == EModeSourisCustom.LienSequence) { foreach (ToolStripMenuItem item in new ArrayList(m_menuSortieSequence.Items)) { if (item != m_menuNext) { m_menuSortieSequence.Items.Remove(item); item.Dispose(); } } C2iExpressionAnalysable expAn = m_expressionStartJoin.Formule as C2iExpressionAnalysable; if (expAn != null) { CInfo2iExpression info = expAn.GetInfos(); if (info.InfosParametres.Count() == 1) { CInfo2iDefinitionParametres defs = info.InfosParametres[0]; int nNum = 0; foreach (CInfoUnParametreExpression par in defs.InfosParametres) { if (par.IsSortieSequence) { CMenuNumero menu = new CMenuNumero(par.NomParametre, nNum); m_menuSortieSequence.Items.Add(menu); menu.Click += new EventHandler(menu_Click); if (ModifierKeys == Keys.Control) { if (m_expressionStartJoin.GetExterne(nNum) == dest) { m_expressionStartJoin.SetExterne(nNum, null); bTraite = true; } } } nNum++; } } } if (!bTraite) { if (ModifierKeys == Keys.Control) { m_expressionStartJoin.Next = null; } else { if (m_menuSortieSequence.Items.Count != 1) { ShowInterfaceLienAction(m_expressionStartJoin, dest); } else { m_expressionStartJoin.Next = dest; } } } } else if (ModeSourisCustom == EModeSourisCustom.LienParametre) { if (ModifierKeys == Keys.Control) { dest.StopUseExterne(m_expressionStartJoin); } else { ShowInterfaceLienParametre(m_expressionStartJoin, dest); } } } } m_expressionStartJoin = null; OnChangeFormules(); } }