123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295 |
- using System;
- using System.Windows.Forms;
- using FastReport.Forms;
- using FastReport.Utils;
- namespace FastReport.AdvMatrix
- {
- internal partial class MatrixHeaderEditorForm : BaseDialogForm
- {
- private HeaderDescriptor descr;
- private bool updating;
- private static int pageIndex = 0;
- private Report Report { get { return descr.Matrix.Report; } }
- private void Init()
- {
- updating = true;
- pcPages.ActivePageIndex = pageIndex;
- // General
- rbSimple.Checked = !descr.IsGroup;
- rbGroup.Checked = descr.IsGroup;
- rbGroup.Enabled = !descr.IsTopNItem;
- tbGroup.Text = descr.Expression;
- tbGroup.Report = Report;
- tbGroup.DataSource = descr.Matrix.DataSource;
- tbDisplayText.Text = descr.DisplayText;
- // Sort
- cbxSortOrder.SelectedIndex = (int)descr.Sort;
- rbSortByItemValue.Checked = String.IsNullOrEmpty(descr.SortByTotal);
- rbSortByTotal.Checked = !rbSortByItemValue.Checked;
- cbxSortByTotal.Items.AddRange(descr.GetAvailableTotals());
- cbxSortByTotal.SelectedIndex = cbxSortByTotal.FindStringExact(descr.SortByTotal);
- cbxInteractiveSort.Items.AddRange(descr.GetAvailableTotals());
- if (descr.InteractiveSort)
- cbxInteractiveSort.SelectedIndex = String.IsNullOrEmpty(descr.InteractiveSortBy) ? 1 : cbxInteractiveSort.FindStringExact(descr.InteractiveSortBy);
- else
- cbxInteractiveSort.SelectedIndex = 0; // NoSort
- cbxSortOrderToggledBy.Items.AddRange(descr.GetAvailableSortButtons());
- cbxSortOrderToggledBy.SelectedIndex = String.IsNullOrEmpty(descr.SortToggledBy) ? 0 : cbxSortOrderToggledBy.FindStringExact(descr.SortToggledBy);
- // Filter
- tbFilter.Text = descr.Filter;
- // TopN
- udTopN.Value = descr.TopN.Count;
- cbTopNTotal.Checked = descr.TopN.Total.Visible;
- tbTopNTotal.Text = descr.TopN.Total.Text;
- cbOthers.Checked = descr.TopN.Others.Visible;
- cbOthersTotal.Checked = descr.TopN.OthersTotal.Visible;
- tbOthersTotal.Text = descr.TopN.OthersTotal.Text;
- cbCreateItems.Checked = descr.TopNItemsPresent();
- // Visibility
- cbVisible.Checked = descr.Visible;
- cbVisible.Enabled = !descr.IsTopNItem;
- tbVisibleExpression.Text = descr.VisibleExpression;
- cbxVisibleToggledBy.Items.AddRange(descr.GetAvailableCollapseButtons());
- cbxVisibleToggledBy.SelectedIndex = cbxVisibleToggledBy.FindStringExact(descr.VisibleToggledBy);
- if (cbxVisibleToggledBy.SelectedIndex == -1)
- cbxVisibleToggledBy.SelectedIndex = 0;
- // Other
- cbStepped.Checked = descr.Stepped;
- cbMerge.Checked = descr.MergeSingleItem;
- cbPageBreak.Checked = descr.PageBreak;
- udColSpan.Value = descr.ColSpan;
- udRowSpan.Value = descr.RowSpan;
- updating = false;
- }
- private void Done()
- {
- pageIndex = pcPages.ActivePageIndex;
- if (DialogResult == DialogResult.OK)
- {
- // General
- descr.Expression = tbGroup.Text;
- descr.DisplayText = tbDisplayText.Text;
- // Sort and filter
- descr.Sort = (SortOrder)cbxSortOrder.SelectedIndex;
- descr.SortByTotal = rbSortByTotal.Checked && cbxSortByTotal.SelectedItem != null ? (string)cbxSortByTotal.SelectedItem : "";
- descr.InteractiveSort = cbxInteractiveSort.SelectedIndex != 0;
- descr.InteractiveSortBy = cbxInteractiveSort.SelectedIndex == 1 ? "" : (string)cbxInteractiveSort.SelectedItem;
- descr.SortToggledBy = cbxSortOrderToggledBy.SelectedIndex == 0 ? "" : (string)cbxSortOrderToggledBy.SelectedItem;
- // Filter
- descr.Filter = tbFilter.Text;
- // TopN
- if (!descr.IsTopNItem)
- {
- descr.TopN.Count = (int)udTopN.Value;
- descr.TopN.Total.Visible = cbTopNTotal.Checked;
- descr.TopN.Total.Text = tbTopNTotal.Text;
- descr.TopN.Others.Visible = cbOthers.Checked;
- descr.TopN.OthersTotal.Visible = cbOthersTotal.Checked;
- descr.TopN.OthersTotal.Text = tbOthersTotal.Text;
- if (cbCreateItems.Checked && !descr.TopNItemsPresent())
- descr.CreateTopNItems();
- if (!cbCreateItems.Checked && descr.TopNItemsPresent())
- descr.DeleteTopNItems();
- }
- // Visibility
- descr.Visible = cbVisible.Checked;
- descr.VisibleExpression = tbVisibleExpression.Text;
- descr.VisibleToggledBy = cbxVisibleToggledBy.SelectedIndex == 0 ? "" : (string)cbxVisibleToggledBy.SelectedItem;
- // Other
- bool steppedChanged = descr.Stepped != cbStepped.Checked;
- descr.Stepped = cbStepped.Checked;
- descr.MergeSingleItem = cbMerge.Checked;
- descr.PageBreak = cbPageBreak.Checked;
- descr.ColSpan = (int)udColSpan.Value;
- descr.RowSpan = (int)udRowSpan.Value;
- if (steppedChanged)
- {
- foreach (HeaderDescriptor child in descr.Items)
- {
- if (child.IsGroup)
- {
- Padding p = child.TemplateCell.Padding;
- if (descr.Stepped)
- p.Left = descr.TemplateCell.Padding.Left + 20;
- else
- p.Left = descr.TemplateCell.Padding.Left;
- child.TemplateCell.Padding = p;
- descr.TemplateCell.HorzAlign = HorzAlign.Left;
- child.TemplateCell.HorzAlign = HorzAlign.Left;
- break;
- }
- }
- }
- }
- }
- public override void Localize()
- {
- base.Localize();
- Text = Res.Get("Forms,AdvMatrixHeaderEditor");
- MyRes res = new MyRes("Forms,AdvMatrixHeaderEditor,General");
- pnGeneral.Text = res.Get("");
- lblItemType.Text = res.Get("ItemType");
- rbSimple.Text = res.Get("Simple");
- rbGroup.Text = res.Get("Group");
- lblDisplayText.Text = res.Get("DisplayText");
- res = new MyRes("Forms,AdvMatrixHeaderEditor,Sort");
- pnSort.Text = res.Get("");
- lblSortOrder.Text = res.Get("SortOrder");
- lblSortBy.Text = res.Get("SortBy");
- rbSortByItemValue.Text = res.Get("ItemValue");
- rbSortByTotal.Text = res.Get("TotalValue");
- lblInteractiveSort.Text = res.Get("InteractiveSortBy");
- cbxInteractiveSort.Items.Add(Res.Get("Misc,None"));
- cbxInteractiveSort.Items.Add(res.Get("Auto"));
- lblSortOrderToggledBy.Text = res.Get("SortOrderToggledBy");
- cbxSortOrderToggledBy.Items.Add(Res.Get("Misc,None"));
- res = new MyRes("Forms,GroupBandEditor");
- cbxSortOrder.Items.Add(res.Get("NoSort"));
- cbxSortOrder.Items.Add(res.Get("Ascending"));
- cbxSortOrder.Items.Add(res.Get("Descending"));
- res = new MyRes("Forms,AdvMatrixHeaderEditor,Filter");
- pnFilter.Text = res.Get("");
- lblFilter.Text = res.Get("Filter");
- res = new MyRes("Forms,AdvMatrixHeaderEditor,TopN");
- pnTopN.Text = res.Get("");
- lblTopNCount.Text = res.Get("Count");
- lblAdditionalItems.Text = res.Get("AdditionalItems");
- cbTopNTotal.Text = res.Get("TopNTotal");
- cbOthers.Text = res.Get("Others");
- cbOthersTotal.Text = res.Get("OthersTotal");
- cbCreateItems.Text = res.Get("Create");
-
- res = new MyRes("Forms,AdvMatrixHeaderEditor,Visibility");
- pnVisibility.Text = res.Get("");
- cbVisible.Text = res.Get("Visible");
- lblVisibleExpression.Text = res.Get("VisibleExpression");
- lblVisibleToggledBy.Text = res.Get("VisibleToggledBy");
- cbxVisibleToggledBy.Items.Add(Res.Get("Misc,None"));
- res = new MyRes("Forms,AdvMatrixHeaderEditor,Other");
- pnOther.Text = res.Get("");
- cbStepped.Text = res.Get("Stepped");
- cbMerge.Text = res.Get("Merge");
- cbPageBreak.Text = res.Get("PageBreak");
- lblColSpan.Text = res.Get("ColSpan");
- lblRowSpan.Text = res.Get("RowSpan");
- }
- public override void UpdateDpiDependencies()
- {
- base.UpdateDpiDependencies();
- tbDisplayText.Image = this.GetImage(68);
- tbFilter.Image = this.GetImage(52);
- tbVisibleExpression.Image = this.GetImage(52);
- }
- public MatrixHeaderEditorForm(HeaderDescriptor descr)
- {
- this.descr = descr;
- InitializeComponent();
- Localize();
- Init();
- UIUtils.CheckRTL(this);
- UpdateDpiDependencies();
- }
- private void MatrixHeaderEditorForm_Shown(object sender, EventArgs e)
- {
- updating = true;
- rbGroup_CheckedChanged(this, EventArgs.Empty);
- udTopN_ValueChanged(this, EventArgs.Empty);
- updating = false;
- }
- private void MatrixHeaderEditorForm_FormClosed(object sender, FormClosedEventArgs e)
- {
- Done();
- }
- private void rbGroup_CheckedChanged(object sender, EventArgs e)
- {
- bool isGroup = rbGroup.Checked;
- tbGroup.Enabled = isGroup;
- pnSort.Enabled = isGroup;
- pnTopN.Enabled = isGroup;
- cbxInteractiveSort.Enabled = isGroup;
- if (!updating)
- {
- tbDisplayText.Text = "";
- if (rbSimple.Checked)
- tbGroup.Text = "";
- }
- if (rbSimple.Checked)
- tbDisplayText.FocusTextBox();
- else
- tbGroup.Focus();
- }
- private void rbSortByTotal_CheckedChanged(object sender, EventArgs e)
- {
- cbxSortByTotal.Enabled = rbSortByTotal.Checked;
- if (!updating)
- {
- if (rbSortByTotal.Checked && cbxSortByTotal.Items.Count > 0)
- cbxSortByTotal.SelectedIndex = 0;
- else
- cbxSortByTotal.SelectedIndex = -1;
- }
- }
- private void tbDisplayText_ButtonClick(object sender, EventArgs e)
- {
- using (TextEditorForm form = new TextEditorForm(Report))
- {
- form.ExpressionText = tbDisplayText.Text;
- form.Brackets = descr.TemplateCell.Brackets;
- if (form.ShowDialog() == DialogResult.OK)
- {
- tbDisplayText.Text = form.ExpressionText;
- }
- }
- }
- private void tbFilter_ButtonClick(object sender, EventArgs e)
- {
- tbFilter.Text = Editors.EditExpression(Report, tbFilter.Text);
- }
- private void udTopN_ValueChanged(object sender, EventArgs e)
- {
- bool enabled = udTopN.Value > 0;
- pnTopNControls.Enabled = enabled;
- if (!enabled)
- cbCreateItems.Checked = false;
- }
- private void tbVisibleExpression_ButtonClick(object sender, EventArgs e)
- {
- tbVisibleExpression.Text = Editors.EditExpression(Report, tbVisibleExpression.Text);
- }
- }
- }
|