123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596 |
- using System;
- using System.Collections.Generic;
- using System.Windows.Forms;
- using FastReport.Utils;
- using System.Globalization;
- using FastReport.Format;
- namespace FastReport.Forms
- {
- internal partial class FormatEditorForm : BaseDialogForm
- {
- private TextObjectBase textObject;
- private int formatIndex;
- private List<FormatBase[]> formats;
- private List<int> selectedFormatIndices;
- public TextObjectBase TextObject
- {
- get { return textObject; }
- set
- {
- textObject = value;
- // get expressions
- string[] expressions = textObject.GetExpressions();
- if (expressions == null || expressions.Length == 0)
- expressions = new string[] { "" };
- cbxExpression.Items.AddRange(expressions);
- // disable controls if there is only one expression
- if (expressions.Length < 2)
- {
- lblExpression.Visible = false;
- cbxExpression.Visible = false;
- int _32 = this.LogicalToDevice(32);
- pc1.Top -= _32;
- btnOk.Top -= _32;
- btnCancel.Top -= _32;
- gbSample.Top -= _32;
- Height -= _32;
- }
- formats = new List<FormatBase[]>();
- selectedFormatIndices = new List<int>();
- for (int i = 0; i < expressions.Length; i++)
- {
- FormatBase format = null;
- if (i < textObject.Formats.Count)
- format = textObject.Formats[i];
- else
- format = new GeneralFormat();
- FormatBase[] formatsArr = new FormatBase[] {
- new GeneralFormat(),
- new NumberFormat(),
- new CurrencyFormat(),
- new DateFormat(),
- new TimeFormat(),
- new PercentFormat(),
- new BooleanFormat(),
- new CustomFormat() };
- this.formats.Add(formatsArr);
- int formatIndex = 0;
- for (int j = 0; j < formatsArr.Length; j++)
- {
- if (formatsArr[j].GetType() == format.GetType())
- {
- formatsArr[j] = format.Clone();
- formatIndex = j;
- break;
- }
- }
- selectedFormatIndices.Add(formatIndex);
- }
- cbxExpression.SelectedIndex = 0;
- }
- }
- public FormatCollection Formats
- {
- get
- {
- FormatCollection collection = new FormatCollection();
- for (int i = 0; i < formats.Count; i++)
- {
- FormatBase format = formats[i][selectedFormatIndices[i]];
- collection.Add(format);
- }
- return collection;
- }
- }
- private int FormatIndex
- {
- get { return formatIndex; }
- set
- {
- formatIndex = value;
- pc1.ActivePageIndex = selectedFormatIndices[formatIndex];
- UpdateControls();
- }
- }
- private FormatBase Format
- {
- get
- {
- int index = selectedFormatIndices[formatIndex];
- return formats[formatIndex][index];
- }
- }
- private NumberFormat NumberFormat
- {
- get { return formats[formatIndex][1] as NumberFormat; }
- }
- private CurrencyFormat CurrencyFormat
- {
- get { return formats[formatIndex][2] as CurrencyFormat; }
- }
- private DateFormat DateFormat
- {
- get { return formats[formatIndex][3] as DateFormat; }
- }
- private TimeFormat TimeFormat
- {
- get { return formats[formatIndex][4] as TimeFormat; }
- }
- private PercentFormat PercentFormat
- {
- get { return formats[formatIndex][5] as PercentFormat; }
- }
- private BooleanFormat BooleanFormat
- {
- get { return formats[formatIndex][6] as BooleanFormat; }
- }
- private CustomFormat CustomFormat
- {
- get { return formats[formatIndex][7] as CustomFormat; }
- }
- private void Change()
- {
- lblSample.Text = Format.GetSampleValue();
- }
- private void UpdateControls()
- {
- // number
- cbNumberUseLocale.Checked = NumberFormat.UseLocale;
- udNumberDecimalDigits.Value = NumberFormat.DecimalDigits;
- if (!NumberFormat.UseLocale)
- {
- cbxNumberDecimalSeparator.Text = NumberFormat.DecimalSeparator;
- cbxNumberGroupSeparator.Text = NumberFormat.GroupSeparator;
- cbxNumberNegativePattern.SelectedIndex = NumberFormat.NegativePattern;
- }
- // currency
- cbCurrencyUseLocale.Checked = CurrencyFormat.UseLocale;
- udCurrencyDecimalDigits.Value = CurrencyFormat.DecimalDigits;
- if (!CurrencyFormat.UseLocale)
- {
- cbxCurrencyDecimalSeparator.Text = CurrencyFormat.DecimalSeparator;
- cbxCurrencyGroupSeparator.Text = CurrencyFormat.GroupSeparator;
- cbxCurrencyPositivePattern.SelectedIndex = CurrencyFormat.PositivePattern;
- cbxCurrencyNegativePattern.SelectedIndex = CurrencyFormat.NegativePattern;
- cbxCurrencySymbol.Text = CurrencyFormat.CurrencySymbol;
- }
- // date
- lbxDates.SelectedItem = DateFormat.Format;
- // time
- lbxTimes.SelectedItem = TimeFormat.Format;
- // percent
- cbPercentUseLocale.Checked = PercentFormat.UseLocale;
- udPercentDecimalDigits.Value = PercentFormat.DecimalDigits;
- if (!PercentFormat.UseLocale)
- {
- cbxPercentDecimalSeparator.Text = PercentFormat.DecimalSeparator;
- cbxPercentGroupSeparator.Text = PercentFormat.GroupSeparator;
- cbxPercentPositivePattern.SelectedIndex = PercentFormat.PositivePattern;
- cbxPercentNegativePattern.SelectedIndex = PercentFormat.NegativePattern;
- cbxPercentSymbol.Text = PercentFormat.PercentSymbol;
- }
- // boolean
- cbxBooleanFalse.Text = BooleanFormat.FalseText;
- cbxBooleanTrue.Text = BooleanFormat.TrueText;
- // custom
- tbCustom.Text = CustomFormat.Format;
- }
- private void cbNumberUseLocale_CheckedChanged(object sender, EventArgs e)
- {
- bool previousUseLocale = NumberFormat.UseLocale;
- NumberFormat.UseLocale = cbNumberUseLocale.Checked;
- if (cbNumberUseLocale.Checked)
- {
- NumberFormatInfo info = CultureInfo.CurrentCulture.NumberFormat;
- if (!previousUseLocale)
- {
- udNumberDecimalDigits.Value = info.NumberDecimalDigits;
- }
- cbxNumberDecimalSeparator.Text = info.NumberDecimalSeparator;
- cbxNumberGroupSeparator.Text = info.NumberGroupSeparator;
- cbxNumberNegativePattern.SelectedIndex = info.NumberNegativePattern;
- }
- Control[] controls = new Control[] { lblNumberDecimalDigits, udNumberDecimalDigits,
- lblNumberDecimalSeparator, cbxNumberDecimalSeparator,
- lblNumberGroupSeparator, cbxNumberGroupSeparator,
- lblNumberNegativePattern, cbxNumberNegativePattern };
- cbxNumberDecimalSeparator.Enabled = !cbNumberUseLocale.Checked;
- cbxNumberGroupSeparator.Enabled = !cbNumberUseLocale.Checked;
- cbxNumberNegativePattern.Enabled = !cbNumberUseLocale.Checked;
- Change();
- }
- private void udNumberDecimalDigits_ValueChanged(object sender, EventArgs e)
- {
- NumberFormat.DecimalDigits = (int)udNumberDecimalDigits.Value;
- Change();
- }
- private void cbxNumberDecimalSeparator_TextChanged(object sender, EventArgs e)
- {
- NumberFormat.DecimalSeparator = cbxNumberDecimalSeparator.Text;
- Change();
- }
- private void cbxNumberGroupSeparator_TextChanged(object sender, EventArgs e)
- {
- if (cbxNumberGroupSeparator.Text == Res.Get("Misc,None"))
- NumberFormat.GroupSeparator = "";
- else
- NumberFormat.GroupSeparator = cbxNumberGroupSeparator.Text;
- Change();
- }
- private void cbxNumberNegativePattern_SelectedValueChanged(object sender, EventArgs e)
- {
- NumberFormat.NegativePattern = cbxNumberNegativePattern.SelectedIndex;
- Change();
- }
- private void cbxCurrencyUseLocale_CheckedChanged(object sender, EventArgs e)
- {
- bool previousUseLocale = CurrencyFormat.UseLocale;
- CurrencyFormat.UseLocale = cbCurrencyUseLocale.Checked;
- if (cbCurrencyUseLocale.Checked)
- {
- NumberFormatInfo info = CultureInfo.CurrentCulture.NumberFormat;
- if (!previousUseLocale)
- {
- udCurrencyDecimalDigits.Value = info.CurrencyDecimalDigits;
- }
- cbxCurrencyDecimalSeparator.Text = info.CurrencyDecimalSeparator;
- cbxCurrencyGroupSeparator.Text = info.CurrencyGroupSeparator;
- cbxCurrencyPositivePattern.SelectedIndex = info.CurrencyPositivePattern;
- cbxCurrencyNegativePattern.SelectedIndex = info.CurrencyNegativePattern;
- cbxCurrencySymbol.Text = info.CurrencySymbol;
- }
- Control[] controls = new Control[] { lblCurrencyDecimalDigits, udCurrencyDecimalDigits,
- lblCurrencyDecimalSeparator, cbxCurrencyDecimalSeparator,
- lblCurrencyGroupSeparator, cbxCurrencyGroupSeparator,
- lblCurrencyPositivePattern, cbxCurrencyPositivePattern,
- lblCurrencyNegativePattern, cbxCurrencyNegativePattern,
- lblCurrencySymbol, cbxCurrencySymbol };
- cbxCurrencyDecimalSeparator.Enabled = !cbCurrencyUseLocale.Checked;
- cbxCurrencyGroupSeparator.Enabled = !cbCurrencyUseLocale.Checked;
- cbxCurrencyPositivePattern.Enabled = !cbCurrencyUseLocale.Checked;
- cbxCurrencyNegativePattern.Enabled = !cbCurrencyUseLocale.Checked;
- cbxCurrencySymbol.Enabled = !cbCurrencyUseLocale.Checked;
- Change();
- }
- private void udCurrencyDecimalDigits_ValueChanged(object sender, EventArgs e)
- {
- CurrencyFormat.DecimalDigits = (int)udCurrencyDecimalDigits.Value;
- Change();
- }
- private void cbxCurrencyDecimalSeparator_TextChanged(object sender, EventArgs e)
- {
- CurrencyFormat.DecimalSeparator = cbxCurrencyDecimalSeparator.Text;
- Change();
- }
- private void cbxCurrencyGroupSeparator_TextChanged(object sender, EventArgs e)
- {
- if (cbxCurrencyGroupSeparator.Text == Res.Get("Misc,None"))
- CurrencyFormat.GroupSeparator = "";
- else
- CurrencyFormat.GroupSeparator = cbxCurrencyGroupSeparator.Text;
- Change();
- }
- private void cbxCurrencyPositivePattern_SelectedValueChanged(object sender, EventArgs e)
- {
- CurrencyFormat.PositivePattern = cbxCurrencyPositivePattern.SelectedIndex;
- Change();
- }
- private void cbxCurrencyNegativePattern_SelectedValueChanged(object sender, EventArgs e)
- {
- CurrencyFormat.NegativePattern = cbxCurrencyNegativePattern.SelectedIndex;
- Change();
- }
- private void cbxCurrencySymbol_TextChanged(object sender, EventArgs e)
- {
- CurrencyFormat.CurrencySymbol = cbxCurrencySymbol.Text;
- Change();
- }
- private void lbxDates_SelectedIndexChanged(object sender, EventArgs e)
- {
- DateFormat.Format = (string)lbxDates.SelectedItem;
- Change();
- }
- private void lbxTimes_SelectedIndexChanged(object sender, EventArgs e)
- {
- TimeFormat.Format = (string)lbxTimes.SelectedItem;
- Change();
- }
- private void cbPercentUseLocale_CheckedChanged(object sender, EventArgs e)
- {
- bool previousUseLocale = PercentFormat.UseLocale;
- PercentFormat.UseLocale = cbPercentUseLocale.Checked;
- if (cbPercentUseLocale.Checked)
- {
- NumberFormatInfo info = CultureInfo.CurrentCulture.NumberFormat;
- if (!previousUseLocale)
- {
- udPercentDecimalDigits.Value = info.PercentDecimalDigits;
- }
- cbxPercentDecimalSeparator.Text = info.PercentDecimalSeparator;
- cbxPercentGroupSeparator.Text = info.PercentGroupSeparator;
- cbxPercentPositivePattern.SelectedIndex = info.PercentPositivePattern;
- cbxPercentNegativePattern.SelectedIndex = info.PercentNegativePattern;
- cbxPercentSymbol.Text = info.PercentSymbol;
- }
- Control[] controls = new Control[] { lblPercentDecimalDigits, udPercentDecimalDigits,
- lblPercentDecimalSeparator, cbxPercentDecimalSeparator,
- lblPercentGroupSeparator, cbxPercentGroupSeparator,
- lblPercentPositivePattern, cbxPercentPositivePattern,
- lblPercentNegativePattern, cbxPercentNegativePattern,
- lblPercentSymbol, cbxPercentSymbol };
- cbxPercentDecimalSeparator.Enabled = !cbPercentUseLocale.Checked;
- cbxPercentGroupSeparator.Enabled = !cbPercentUseLocale.Checked;
- cbxPercentPositivePattern.Enabled = !cbPercentUseLocale.Checked;
- cbxPercentNegativePattern.Enabled = !cbPercentUseLocale.Checked;
- cbxPercentSymbol.Enabled = !cbPercentUseLocale.Checked;
- Change();
- }
- private void udPercentDecimalDigits_ValueChanged(object sender, EventArgs e)
- {
- PercentFormat.DecimalDigits = (int)udPercentDecimalDigits.Value;
- Change();
- }
- private void cbxPercentDecimalSeparator_TextChanged(object sender, EventArgs e)
- {
- PercentFormat.DecimalSeparator = cbxPercentDecimalSeparator.Text;
- Change();
- }
- private void cbxPercentGroupSeparator_TextChanged(object sender, EventArgs e)
- {
- if (cbxPercentGroupSeparator.Text == Res.Get("Misc,None"))
- PercentFormat.GroupSeparator = "";
- else
- PercentFormat.GroupSeparator = cbxPercentGroupSeparator.Text;
- Change();
- }
- private void cbxPercentPositivePattern_SelectedValueChanged(object sender, EventArgs e)
- {
- PercentFormat.PositivePattern = cbxPercentPositivePattern.SelectedIndex;
- Change();
- }
- private void cbxPercentNegativePattern_SelectedValueChanged(object sender, EventArgs e)
- {
- PercentFormat.NegativePattern = cbxPercentNegativePattern.SelectedIndex;
- Change();
- }
- private void cbxPercentSymbol_TextChanged(object sender, EventArgs e)
- {
- PercentFormat.PercentSymbol = cbxPercentSymbol.Text;
- Change();
- }
- private void cbxBooleanFalse_TextChanged(object sender, EventArgs e)
- {
- BooleanFormat.FalseText = cbxBooleanFalse.Text;
- Change();
- }
- private void cbxBooleanTrue_TextChanged(object sender, EventArgs e)
- {
- BooleanFormat.TrueText = cbxBooleanTrue.Text;
- Change();
- }
- private void lbxCustom_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (lbxCustom.SelectedIndex == -1)
- return;
- string format = (string)lbxCustom.SelectedItem;
- tbCustom.Text = format.Substring(format.IndexOf(';') + 1);
- }
- private void tbCustom_TextChanged(object sender, EventArgs e)
- {
- CustomFormat.Format = tbCustom.Text;
- Change();
- }
- private void cbxExpression_SelectedIndexChanged(object sender, EventArgs e)
- {
- FormatIndex = cbxExpression.SelectedIndex;
- pc1.Focus();
- }
- private void pc1_PageSelected(object sender, EventArgs e)
- {
- selectedFormatIndices[formatIndex] = pc1.ActivePageIndex;
- Change();
- }
- private void lbxDates_DrawItem(object sender, DrawItemEventArgs e)
- {
- e.DrawBackground();
- if (e.Index >= 0)
- {
- string format = (string)(sender as ListBox).Items[e.Index];
- string text = String.Format("{0:" + format + "}", new DateTime(2007, 11, 30, 13, 30, 0));
- TextRenderer.DrawText(e.Graphics, text, e.Font, e.Bounds.Location, e.ForeColor);
- TextRenderer.DrawText(e.Graphics, format, e.Font, e.Bounds, e.ForeColor, TextFormatFlags.Right);
- }
- }
- private void lbxCustom_DrawItem(object sender, DrawItemEventArgs e)
- {
- e.DrawBackground();
- if (e.Index >= 0)
- {
- string format = (string)lbxCustom.Items[e.Index];
- string text = format.Split(';')[0];
- TextRenderer.DrawText(e.Graphics, text, e.Font, e.Bounds.Location, e.ForeColor);
- }
- }
- public override void UpdateDpiDependencies()
- {
- base.UpdateDpiDependencies();
- //int gap = this.LogicalToDevice(32);
- //lbxDates.Height = pnDate.Height - gbSample.Height - gap - lbxDates.Top;
- //lbxTimes.Height = pnDate.Height - gbSample.Height - gap - lbxTimes.Top;
- //lbxCustom.Height = pnDate.Height - gbSample.Height - gap - lbxCustom.Top;
- lbxDates.ItemHeight = this.LogicalToDevice(15);
- lbxTimes.ItemHeight = lbxDates.ItemHeight;
- lbxCustom.ItemHeight = lbxDates.ItemHeight;
- }
- private void FormatEditorForm_Shown(object sender, EventArgs e)
- {
- }
- public override void Localize()
- {
- base.Localize();
- MyRes res = new MyRes("Forms,FormatEditor");
- Text = res.Get("");
- gbSample.Text = Res.Get("Misc,Sample");
- lblExpression.Text = res.Get("Expression");
- pnGeneral.Text = res.Get("General");
- pnNumber.Text = res.Get("Number");
- pnCurrency.Text = res.Get("Currency");
- pnDate.Text = res.Get("Date");
- pnTime.Text = res.Get("Time");
- pnPercent.Text = res.Get("Percent");
- pnBoolean.Text = res.Get("Boolean");
- pnCustom.Text = res.Get("Custom");
- cbNumberUseLocale.Text = res.Get("UseLocale");
- cbCurrencyUseLocale.Text = res.Get("UseLocale");
- cbPercentUseLocale.Text = res.Get("UseLocale");
- lblNumberDecimalDigits.Text = res.Get("DecimalDigits");
- lblNumberDecimalSeparator.Text = res.Get("DecimalSeparator");
- lblNumberGroupSeparator.Text = res.Get("GroupSeparator");
- lblNumberNegativePattern.Text = res.Get("NegativePattern");
- lblCurrencyDecimalDigits.Text = res.Get("DecimalDigits");
- lblCurrencyDecimalSeparator.Text = res.Get("DecimalSeparator");
- lblCurrencyGroupSeparator.Text = res.Get("GroupSeparator");
- lblCurrencyPositivePattern.Text = res.Get("PositivePattern");
- lblCurrencyNegativePattern.Text = res.Get("NegativePattern");
- lblCurrencySymbol.Text = res.Get("CurrencySymbol");
- lblPercentDecimalDigits.Text = res.Get("DecimalDigits");
- lblPercentDecimalSeparator.Text = res.Get("DecimalSeparator");
- lblPercentGroupSeparator.Text = res.Get("GroupSeparator");
- lblPercentPositivePattern.Text = res.Get("PositivePattern");
- lblPercentNegativePattern.Text = res.Get("NegativePattern");
- lblPercentSymbol.Text = res.Get("PercentSymbol");
- lblBooleanFalse.Text = res.Get("FalseText");
- lblBooleanTrue.Text = res.Get("TrueText");
- for (int i = 1; i < 20; i++)
- {
- if (!Res.StringExists("Formats,Date" + i.ToString()))
- break;
- lbxDates.Items.Add(Res.Get("Formats,Date" + i.ToString()));
- }
- for (int i = 1; i < 20; i++)
- {
- if (!Res.StringExists("Formats,Time" + i.ToString()))
- break;
- lbxTimes.Items.Add(Res.Get("Formats,Time" + i.ToString()));
- }
- for (int i = 1; i < 20; i++)
- {
- if (!Res.StringExists("Formats,BooleanF" + i.ToString()))
- break;
- cbxBooleanFalse.Items.Add(Res.Get("Formats,BooleanF" + i.ToString()));
- cbxBooleanTrue.Items.Add(Res.Get("Formats,BooleanT" + i.ToString()));
- }
- for (int i = 1; i < 20; i++)
- {
- if (!Res.StringExists("Formats,Custom" + i.ToString()))
- break;
- lbxCustom.Items.Add(Res.Get("Formats,Custom" + i.ToString()));
- }
- string[] decimalSeparators = new string[] { ".", ",", "-" };
- cbxCurrencyDecimalSeparator.Items.AddRange(decimalSeparators);
- cbxNumberDecimalSeparator.Items.AddRange(decimalSeparators);
- cbxPercentDecimalSeparator.Items.AddRange(decimalSeparators);
- string[] groupSeparators = new string[] { ",", " ", Res.Get("Misc,None") };
- cbxCurrencyGroupSeparator.Items.AddRange(groupSeparators);
- cbxNumberGroupSeparator.Items.AddRange(groupSeparators);
- cbxPercentGroupSeparator.Items.AddRange(groupSeparators);
- cbxCurrencyPositivePattern.Items.AddRange(new string[] { "$n", "n$", "$ n", "n $" });
- cbxCurrencyNegativePattern.Items.AddRange(new string[] { "($n)", "-$n", "$-n", "$n-", "(n$)",
- "-n$", "n-$", "n$-", "-n $", "-$ n", "n $-", "$ n-", "$ -n", "n- $", "($ n)", "(n $)" });
- cbxNumberNegativePattern.Items.AddRange(new string[] { "(n)", "-n", "- n", "n-", "n -" });
- cbxPercentPositivePattern.Items.AddRange(new string[] { "n %", "n%", "%n", "% n" });
- cbxPercentNegativePattern.Items.AddRange(new string[] { "-n %", "-n%", "-%n", "%-n", "%n-",
- "n-%", "n%-", "-%n", "n %-", "% n-", "% -n", "n- %" });
- cbxCurrencySymbol.Items.Add(CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);
- cbxCurrencySymbol.Items.Add("$");
- cbxCurrencySymbol.Items.Add("\u20AC");
- cbxCurrencySymbol.Items.Add("\u00A3");
- cbxCurrencySymbol.Items.Add("\u20B9");
- cbxPercentSymbol.Items.AddRange(new string[] { "%", "" });
- }
- public FormatEditorForm()
- {
- InitializeComponent();
- Localize();
- UIUtils.CheckRTL(this);
- UpdateDpiDependencies();
- }
- }
- }
|