//--------------------------------------------------------------
        public void Initialiser(
            CGridDataCache datas,
            int nColumnIndex,
            IWndIncluableDansDataGrid wndIncluable,
            IFournisseurProprietesDynamiques fournisseur)
        {
            m_datas        = datas;
            m_nColumnIndex = nColumnIndex;
            m_wndSource    = wndIncluable;
            m_fournisseur  = fournisseur;
            if (m_wndEdition != null && m_wndEdition.Control != null)
            {
                m_wndEdition.Control.Visible = false;
                Controls.Remove(m_wndEdition.Control);
                m_wndEdition.Control.Dispose();
                m_wndEdition = null;
            }


            InitializeComponent();


            m_createurFormulaires = new CCreateur2iFormulaireV2();
            m_wndEdition          = m_createurFormulaires.CreateControle((C2iWnd)m_wndSource, this, m_fournisseur) as IControlIncluableDansDataGrid;
            if (m_wndEdition != null && m_wndEdition.Control != null)
            {
                m_wndEdition.Control.Dock = DockStyle.Fill;
            }
            IControlIncluableDansDataGrid ctrlDg = m_wndEdition as IControlIncluableDansDataGrid;

            if (ctrlDg != null)
            {
                ctrlDg.DataGrid = m_dataGridView;
            }
        }
Пример #2
0
        private void FillMenuFiltre(int nColIndex, C2iWndDataGridColumn colonne)
        {
            m_nColIndexForFiltre = nColIndex;
            foreach (ToolStripItem item in new ArrayList(m_menuFiltreSpecial.DropDownItems))
            {
                m_menuFiltreSpecial.DropDownItems.Remove(item);
                if (item != m_valueSelector)
                {
                    item.Dispose();
                }
            }
            m_menuFiltreSpecial.DropDownItems.Clear();
            CGridFilterForWndDataGrid filtreActif = null;

            m_dicFiltre.TryGetValue(nColIndex, out filtreActif);
            IWndIncluableDansDataGrid wnd = colonne.Control as IWndIncluableDansDataGrid;

            if (wnd != null)
            {
                foreach (CGridFilterForWndDataGrid filtre in wnd.GetPossibleFilters())
                {
                    CGridFilterForWndDataGrid filtreToSet = filtre;
                    if (filtreActif != null && filtreActif.GetType() == filtre.GetType())
                    {
                        filtreToSet = filtreActif;
                    }
                    ToolStripMenuItem itemFiltre = new ToolStripMenuItem(filtreToSet.Label);
                    itemFiltre.Tag     = filtreToSet;
                    itemFiltre.Click  += new EventHandler(itemFiltre_Click);
                    itemFiltre.Checked = filtreToSet == filtreActif;
                    m_menuFiltreSpecial.DropDownItems.Add(itemFiltre);
                }
            }
            IEnumerable <object> source = m_listeObjetsOriginale;

            if (source != null)
            {
                CGridFilterListeValeurs             filtreListe = filtreActif as CGridFilterListeValeurs;
                List <CCoupleValeurEtValeurDisplay> lstValeurs  = new List <CCoupleValeurEtValeurDisplay>();
                if (filtreListe == null)
                {
                    source = m_grid.DataSource as IEnumerable <object>;
                }
                foreach (object obj in source)
                {
                    CCoupleValeurEtValeurDisplay valeur = m_cache.GetValeur(obj, nColIndex, false);
                    if (valeur != null)
                    {
                        lstValeurs.Add(valeur);
                    }
                }
                m_valueSelector.Selector.FillWithValues(lstValeurs.ToArray(), filtreListe);
                if (!m_menuFiltre.Items.Contains(m_valueSelector))
                {
                    m_menuFiltre.Items.Add(m_valueSelector);
                }
            }
        }
Пример #3
0
        public C2iWndDataGridColumn AddColumn(
            string strLibelle,
            IWndIncluableDansDataGrid wnd)
        {
            C2iWndDataGridColumn col = new C2iWndDataGridColumn();

            col.Text        = strLibelle;
            col.ColumnWidth = ((C2iWnd)wnd).Size.Width;
            col.Control     = (C2iWnd)wnd;
            m_wndGrid.AddChild(col);
            col.Parent = m_wndGrid;
            return(col);
        }
Пример #4
0
        private void GetDataThread(object data)
        {
            CThreadData d = data as CThreadData;

            if (d != null)
            {
                IWndIncluableDansDataGrid ctrl = null;
                if (m_dicControles.TryGetValue(d.ColumnIndex, out ctrl))
                {
                    CCoupleValeurEtValeurDisplay dTmp = GetValeurHorsCache(d.Objet, d.ColumnIndex, d.Cache);
                    m_grid.OnDataArrivé(d.Objet, d.ColumnIndex);
                }
            }
        }
Пример #5
0
 public CDataGridViewCustomCellFor2iWnd(
     CGridDataCache datas,
     C2iWndDataGridColumn wndCol,
     int nColumnIndex,
     IWndIncluableDansDataGrid wndAssociee,
     IFournisseurProprietesDynamiques fournisseur)
     : base()
 {
     m_datas        = datas;
     m_nColumnIndex = nColumnIndex;
     m_2iWndForGrid = wndAssociee;
     m_fournisseur  = fournisseur;
     m_wndCol       = wndCol;
 }
Пример #6
0
        private CCoupleValeurEtValeurDisplay GetValeurHorsCache(object objet, int nColumnIndex, CObjetDataCache cache)
        {
            IWndIncluableDansDataGrid ctrl = null;

            if (m_dicControles.TryGetValue(nColumnIndex, out ctrl))
            {
                try
                {
                    object elementEdite = GetElementEdite(objet, nColumnIndex);
                    object val          = ctrl.GetObjectValueForGrid(elementEdite);
                    string strVal       = ctrl.ConvertObjectValueToStringForGrid(val);
                    cache.SetValeur(nColumnIndex, strVal, val);
                    return(new CCoupleValeurEtValeurDisplay(strVal, val));
                }
                catch
                {
                    cache.SetValeur(nColumnIndex, "", null);
                }
            }
            return(new CCoupleValeurEtValeurDisplay("", null));
        }
Пример #7
0
 public void RegisterControle(int nCol, IWndIncluableDansDataGrid ctrl)
 {
     m_dicControles[nCol] = ctrl;
 }
Пример #8
0
        public void Init(
            CWndFor2iDataGrid wndFor2iDataGrid,
            C2iWndDataGrid wndGrid,
            object elementEdite,
            List <object> lstObjets,
            IFournisseurProprietesDynamiques fournisseur)
        {
            m_wndFor2iDataGrid     = wndFor2iDataGrid;
            m_listeObjetsOriginale = lstObjets;
            m_fournisseur          = fournisseur;
            m_wndGrid      = wndGrid;
            m_elementEdite = elementEdite;
            if (m_cache != null)
            {
                m_cache.Dispose();
            }
            m_cache = new CGridDataCache(this);


            List <object> listeObjets = new List <object>(lstObjets);

            foreach (object newElt in m_listeElementsAdd)
            {
                if (!lstObjets.Contains(newElt))
                {
                    lstObjets.Add(newElt);
                }
            }

            m_panelTop.Visible  = m_wndGrid.HasAddButton || m_wndGrid.HasDeleteButton;
            m_lnkAdd.Visible    = m_wndGrid.HasAddButton;
            m_lnkDelete.Visible = m_wndGrid.HasDeleteButton;

            m_grid.AutoGenerateColumns = false;
            Filtrer();
            m_grid.SuspendDrawing();
            //m_grid.DataSource = lstObjets;
            m_grid.Columns.Clear();
            int nMaxHeight = m_grid.ColumnHeadersHeight;

            m_grid.EnableHeadersVisualStyles            = false;
            m_grid.RowHeadersVisible                    = m_wndGrid.RowHeaderWidth != 0;
            m_grid.RowHeadersWidth                      = Math.Max(m_wndGrid.RowHeaderWidth, 10);
            m_grid.RowHeadersDefaultCellStyle.BackColor = m_wndGrid.RowHeaderColor;
            m_grid.BackgroundColor                      = m_wndGrid.BackColor;
            m_grid.DefaultCellStyle.SelectionBackColor  = m_wndGrid.SelectedCellBackColor;
            m_grid.DefaultCellStyle.SelectionForeColor  = m_wndGrid.SelectedCellForeColor;
            m_grid.EditMode = DataGridViewEditMode.EditOnEnter;
            if (m_wndGrid.DefaultRowHeight > 0)
            {
                m_grid.RowTemplate.Height = m_wndGrid.DefaultRowHeight;
            }
            int nCol = 0;

            foreach (I2iObjetGraphique obj in m_wndGrid.Childs)
            {
                C2iWndDataGridColumn          col     = obj as C2iWndDataGridColumn;
                CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(m_elementEdite);
                //Evalue la formule de visibilité
                if (col.Visiblity != null)
                {
                    CResultAErreur res = col.Visiblity.Eval(ctxEval);
                    if (res && !CUtilBool.BoolFromObject(res.Data))
                    {
                        col = null;
                    }
                }
                if (col != null)
                {
                    IWndIncluableDansDataGrid wndForGrid = col.Control as IWndIncluableDansDataGrid;
                    m_cache.RegisterControle(nCol, wndForGrid);
                    nCol++;
                    if (wndForGrid != null)
                    {
                        DataGridViewColumn gridCol = new DataGridViewColumn(
                            new CDataGridViewCustomCellFor2iWnd(m_cache, col, nCol - 1, wndForGrid, m_fournisseur)
                            );
                        if (col.Enabled != null)
                        {
                            CResultAErreur result = col.Enabled.Eval(ctxEval);
                            if (result && !CUtilBool.BoolFromObject(result.Data))
                            {
                                gridCol.ReadOnly = true;
                            }
                        }
                        gridCol.HeaderText = col.Text;
                        gridCol.Width      = col.ColumnWidth;
                        DataGridViewCellStyle style = new DataGridViewCellStyle();
                        style.BackColor          = col.BackColor;
                        style.ForeColor          = col.ForeColor;
                        style.Font               = col.Font;
                        gridCol.HeaderCell.Style = style;

                        if (col.Control != null)
                        {
                            DataGridViewCellStyle styleCell = new DataGridViewCellStyle();
                            styleCell.Font             = col.Control.Font;
                            styleCell.BackColor        = col.Control.BackColor;
                            styleCell.ForeColor        = col.Control.ForeColor;
                            styleCell.WrapMode         = DataGridViewTriState.True;
                            gridCol.CellTemplate.Style = styleCell;
                        }
                        m_grid.Columns.Add(gridCol);
                        nMaxHeight = Math.Max(col.Size.Height, nMaxHeight);
                    }
                }
            }
            m_grid.ResumeDrawing();
            m_grid.ColumnHeadersHeight = nMaxHeight;
            InitRestrictions(m_listeRestrictions);
        }
Пример #9
0
        private void Filtrer()
        {
            List <object> lst = m_listeObjetsOriginale;

            if (lst == null)
            {
                return;
            }
            using (CWaitCursor waiter = new CWaitCursor())
            {
                bool bCancel = false;
                foreach (KeyValuePair <int, CGridFilterForWndDataGrid> kv in m_dicFiltre)
                {
                    if (kv.Value != null)
                    {
                        CGridFilterForWndDataGrid filter = kv.Value;
                        C2iWndDataGridColumn      col    = m_wndGrid.GetColumn(kv.Key);
                        IWndIncluableDansDataGrid ctrl   = col.Control as IWndIncluableDansDataGrid;
                        if (ctrl != null)
                        {
                            List <object> lst2 = new List <object>();
                            foreach (object obj in lst)
                            {
                                int nVal = (int)Keys.Escape;

                                nVal = GetKeyState((int)Keys.Escape);
                                if (nVal < 0)
                                {
                                    bCancel = true;
                                    break;
                                }
                                CCoupleValeurEtValeurDisplay dataVal = m_cache.GetValeur(obj, kv.Key, col.MultiThread);
                                if (dataVal != null && filter.IsValueIn(dataVal.ObjectValue))
                                {
                                    lst2.Add(obj);
                                }
                            }
                            lst = lst2;
                        }
                    }
                    if (bCancel)
                    {
                        break;
                    }
                }
                if (bCancel)
                {
                    lst = m_listeObjetsOriginale;
                    MessageBox.Show(I.T("Filter has been canceled|20019"));
                }
            }
            if (m_nColumnSort != null)
            {
                try
                {
                    lst.Sort(new CGridSorter(m_nColumnSort.Value, m_bSortAsc, m_cache));
                }
                catch { }
            }
            m_grid.DataSource = lst;
            foreach (DataGridViewColumn col in m_grid.Columns)
            {
                CDataGridViewCustomCellFor2iWnd cell = col.CellTemplate as CDataGridViewCustomCellFor2iWnd;
            }
        }