Exemplo n.º 1
0
        public void SetHCView(HCView aHCView)
        {
            FHCView = aHCView;
            HCRichData vData  = FHCView.ActiveSection.ActiveData;
            DeTable    vTable = vData.GetActiveItem() as DeTable;

            // 表格
            tbxCellHPadding.Text     = String.Format("{0:0.##}", vTable.CellHPaddingMM);
            tbxCellVPadding.Text     = String.Format("{0:0.##}", vTable.CellVPaddingMM);
            cbxBorderVisible.Checked = vTable.BorderVisible;
            tbxBorderWidth.Text      = String.Format("{0:0.##}", vTable.BorderWidthPt);

            tbxFixRowFirst.Text = (vTable.FixRow).ToString();
            if (vTable.FixRowCount > 0)
            {
                tbxFixRowLast.Text = (vTable.FixRow + vTable.FixRowCount - 1).ToString();
            }
            else
            {
                tbxFixRowLast.Text = tbxFixRowFirst.Text;
            }


            tbxFixColFirst.Text = (vTable.FixCol).ToString();
            if (vTable.FixColCount > 0)
            {
                tbxFixColLast.Text = (vTable.FixCol + vTable.FixColCount - 1).ToString();
            }
            else
            {
                tbxFixColLast.Text = tbxFixColFirst.Text;
            }

            // 行
            if (vTable.SelectCellRang.StartRow >= 0)
            {
                tabRow.Text = "行(" + (vTable.SelectCellRang.StartRow).ToString() + ")";
                if (vTable.SelectCellRang.EndRow > 0)
                {
                    tabRow.Text += " - (" + (vTable.SelectCellRang.EndRow).ToString() + ")";
                }

                tbxRowHeight.Text = vTable.Rows[vTable.SelectCellRang.StartRow].Height.ToString();  // 行高
            }
            else
            {
                tabTableInfo.TabPages.Remove(tabRow);
            }

            // 单元格
            if ((vTable.SelectCellRang.StartRow >= 0) && (vTable.SelectCellRang.StartCol >= 0))
            {
                HCAlignVert vAlignVer = HCAlignVert.cavTop;

                if (vTable.SelectCellRang.EndRow >= 0)  // 多选
                {
                    vAlignVer    = vTable[vTable.SelectCellRang.StartRow, vTable.SelectCellRang.StartCol].AlignVert;
                    tabCell.Text = "单元格(" + (vTable.SelectCellRang.StartRow).ToString() + ","
                                   + (vTable.SelectCellRang.StartCol).ToString() + ") - ("
                                   + (vTable.SelectCellRang.EndRow).ToString() + ","
                                   + (vTable.SelectCellRang.EndCol).ToString() + ")";
                }
                else
                {
                    vAlignVer    = vTable.GetEditCell().AlignVert;
                    tabCell.Text = "单元格(" + (vTable.SelectCellRang.StartRow).ToString() + ","
                                   + (vTable.SelectCellRang.StartCol).ToString() + ")";
                }

                cbbCellAlignVert.SelectedIndex = (int)vAlignVer;
            }
            else
            {
                tabTableInfo.TabPages.Remove(tabCell);
            }

            dgvTable.RowCount = vTable.Propertys.Count + 1;
            if (vTable.Propertys.Count > 0)
            {
                int vRow = 0;
                foreach (KeyValuePair <string, string> keyValuePair in vTable.Propertys)
                {
                    dgvTable.Rows[vRow].Cells[0].Value = keyValuePair.Key;
                    dgvTable.Rows[vRow].Cells[1].Value = keyValuePair.Value;
                    vRow++;
                }
            }

            this.ShowDialog();
            if (this.DialogResult == System.Windows.Forms.DialogResult.OK)
            {
                FHCView.BeginUpdate();
                try
                {
                    // 表格
                    vTable.CellHPaddingMM = Single.Parse(tbxCellHPadding.Text);
                    vTable.CellVPaddingMM = Single.Parse(tbxCellVPadding.Text);
                    vTable.BorderWidthPt  = float.Parse(tbxBorderWidth.Text);
                    vTable.BorderVisible  = cbxBorderVisible.Checked;

                    vTable.SetFixRowAndCount(sbyte.Parse(tbxFixRowFirst.Text),
                                             (byte)(Math.Max(0, int.Parse(tbxFixRowLast.Text) - int.Parse(tbxFixRowFirst.Text) + 1)));

                    vTable.SetFixColAndCount(sbyte.Parse(tbxFixColFirst.Text),
                                             (byte)(Math.Max(0, int.Parse(tbxFixColLast.Text) - vTable.FixCol)));

                    // 行
                    if (vTable.SelectCellRang.StartRow >= 0)
                    {
                        int viValue = int.Parse(tbxRowHeight.Text);
                        if (vTable.SelectCellRang.EndRow > 0)
                        {
                            for (int vR = vTable.SelectCellRang.StartRow; vR <= vTable.SelectCellRang.EndRow; vR++)
                            {
                                vTable.Rows[vR].Height = viValue;
                            }
                        }
                        else
                        {
                            vTable.Rows[vTable.SelectCellRang.StartRow].Height = viValue;
                        }
                    }

                    // 单元格
                    if ((vTable.SelectCellRang.StartRow >= 0) && (vTable.SelectCellRang.StartCol >= 0))
                    {
                        if (vTable.SelectCellRang.EndCol > 0)
                        {
                            for (int vR = vTable.SelectCellRang.StartRow; vR <= vTable.SelectCellRang.EndRow; vR++)
                            {
                                for (int vC = vTable.SelectCellRang.StartCol; vC <= vTable.SelectCellRang.EndCol; vC++)
                                {
                                    vTable[vR, vC].AlignVert = (HCAlignVert)cbbCellAlignVert.SelectedIndex;
                                }
                            }
                        }
                        else
                        {
                            vTable.GetEditCell().AlignVert = (HCAlignVert)cbbCellAlignVert.SelectedIndex;
                        }
                    }

                    vTable.Propertys.Clear();
                    string vsValue = "";
                    for (int i = 0; i < dgvTable.RowCount; i++)
                    {
                        if (dgvTable.Rows[i].Cells[0].Value == null)
                        {
                            continue;
                        }

                        if (dgvTable.Rows[i].Cells[1].Value == null)
                        {
                            vsValue = "";
                        }
                        else
                        {
                            vsValue = dgvTable.Rows[i].Cells[1].Value.ToString();
                        }

                        if (dgvTable.Rows[i].Cells[0].Value.ToString().Trim() != "")
                        {
                            vTable.Propertys.Add(dgvTable.Rows[i].Cells[0].Value.ToString(), vsValue);
                        }
                    }

                    if (FReFormat)
                    {
                        FHCView.ActiveSection.ReFormatActiveItem();
                    }
                }
                finally
                {
                    FHCView.EndUpdate();
                }
            }
        }