Beispiel #1
0
        void VGrid_MouseClick(object sender, MouseEventArgs e)
        {
            VGridHitInfo hitInfo = VGrid.CalcHitInfo(VGrid.PointToClient(this.PointToScreen(e.Location)));

            if (hitInfo.Row != null && e.Button == System.Windows.Forms.MouseButtons.Left &&
                e.Location.X - VGrid.ViewInfo[hitInfo.Row].ValuesRect.Left < 18 && e.Location.X - VGrid.ViewInfo[hitInfo.Row].ValuesRect.Left > 0)
            {
                RunFocusedLink();
            }
        }
Beispiel #2
0
        private void navEditEntry_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            dwWin2.Hide();
            dwWin1.Hide();
            dwWin1.Text = "Registry Entry";
            VGrid frm = new VGrid()
            {
                TopLevel = false
            };

            radPanel1.Controls.Clear();
            frm.FormBorderStyle = FormBorderStyle.None;
            frm.Dock            = DockStyle.Fill;
            radPanel1.Controls.Add(frm);
            frm.Execute();
            dwWin1.Show();
        }
        public void Render(VGrid grid)
        {
            var measure = grid.Body.Measure(GridMeasure.Infinite, _layoutModel);
            var range   = GridRange.Create(GridVector.Zero, measure);

            grid.Body.Arrange(range, _layoutModel);

            // 余った列を削除する。
            for (var i = _inner.Columns.Count; i > measure.Column;)
            {
                i--;

                Debug.WriteLine("Remove column");
                _inner.Columns.RemoveAt(i);
            }

            // 足りない列を追加する。
            for (var i = _inner.Columns.Count; i < measure.Column; i++)
            {
                Debug.WriteLine("Add column");
                _inner.Columns.Add(i.ToString(), i.ToString());
            }

            // 余った行を削除する。
            for (var i = _inner.Rows.Count; i > measure.Row;)
            {
                i--;

                if (!_inner.Rows[i].IsNewRow)
                {
                    Debug.WriteLine("Remove row");
                    _inner.Rows.RemoveAt(i);
                }
            }

            // 足りない行を追加する。
            for (var i = _inner.Rows.Count; i < measure.Row; i++)
            {
                Debug.WriteLine("Add row");
                _inner.Rows.Add();
            }

            // セルを更新する。
            foreach (var vCell in grid.Cells)
            {
                var point = _layoutModel.Touch(vCell.ElementKey).LastArrange.Start;

                var cellElement = _inner.Rows[point.Row.Row].Cells[point.Column.Column];

                if (!EqualityComparer <object> .Default.Equals(cellElement.Value, vCell.Value))
                {
                    Debug.WriteLine("Cell[{0}].Value = {1}", point.AsDebug, vCell.Value);
                    cellElement.Value = vCell.Value;
                }

                var readOnly = vCell.Attributes["A_READ_ONLY"] as bool? == true;
                if (cellElement.ReadOnly != readOnly)
                {
                    cellElement.ReadOnly = readOnly;
                }
            }

            _lastGrid = grid;
        }