123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- using System;
- using System.Windows.Forms;
- using System.Drawing;
- using FastReport.Utils;
- using FastReport.DevComponents.DotNetBar;
- namespace FastReport.Controls
- {
- internal class StyleComboBoxItem : ComboBoxItem
- {
- private bool updating;
- private Report report;
- public event EventHandler StyleSelected;
- public new string Style
- {
- get
- {
- if (ComboBoxEx.Text == Res.Get("Designer,Toolbar,Style,NoStyle"))
- return "";
- return ComboBoxEx.Text;
- }
- set
- {
- updating = true;
- if (value == null)
- value = "";
- int i = Items.IndexOf(value);
- if (i != -1)
- SelectedIndex = i;
- else
- {
- if (String.IsNullOrEmpty(value))
- value = Res.Get("Designer,Toolbar,Style,SelectStyle");
- ComboBoxEx.Text = value;
- }
- updating = false;
- }
- }
- public Report Report
- {
- get { return report; }
- set
- {
- report = value;
- if (value != null)
- UpdateItems();
- }
- }
- private void ComboBox_MeasureItem(object sender, MeasureItemEventArgs e)
- {
- e.ItemHeight = ComboBoxEx.LogicalToDevice(32);
- }
- private void ComboBox_DrawItem(object sender, DrawItemEventArgs e)
- {
- e.DrawBackground();
- Graphics g = e.Graphics;
- if ((e.State & DrawItemState.ComboBoxEdit) > 0)
- {
- TextRenderer.DrawText(g, ComboBoxEx.Text, e.Font, e.Bounds.Location, e.ForeColor, e.BackColor);
- }
- else if (e.Index >= 0)
- {
- string name = (string)Items[e.Index];
- using (TextObject sample = new TextObject())
- {
- sample.Bounds = new RectangleF(e.Bounds.Left + 2, e.Bounds.Top + 2, e.Bounds.Width - 4, e.Bounds.Height - 4);
- sample.Text = name;
- sample.HorzAlign = HorzAlign.Center;
- sample.VertAlign = VertAlign.Center;
- if (report != null)
- {
- int index = report.Styles.IndexOf(name);
- if (index != -1)
- sample.ApplyStyle(report.Styles[index]);
- }
- sample.Font = ComboBoxEx.LogicalToDevice(sample.Font, true);
- using (GraphicCache cache = new GraphicCache())
- {
- sample.Draw(new FRPaintEventArgs(g, 1, 1, cache));
- }
- }
- }
- }
- private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (updating)
- return;
- if (StyleSelected != null)
- StyleSelected(this, EventArgs.Empty);
- }
- private void UpdateItems()
- {
- Items.Clear();
- Items.Add(Res.Get("Designer,Toolbar,Style,NoStyle"));
- foreach (Style s in report.Styles)
- {
- Items.Add(s.Name);
- }
- }
- public StyleComboBoxItem() : base()
- {
- ComboBoxEx.DisableInternalDrawing = true;
- ComboBoxEx.DropDownStyle = ComboBoxStyle.DropDown;
- ComboBoxEx.DrawMode = DrawMode.OwnerDrawVariable;
- ItemHeight = 14;
- ComboWidth = 110;
- DropDownWidth = 150;
- DropDownHeight = 300;
- ComboBoxEx.DrawItem += new DrawItemEventHandler(ComboBox_DrawItem);
- ComboBoxEx.MeasureItem += new MeasureItemEventHandler(ComboBox_MeasureItem);
- ComboBoxEx.SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
- }
- }
- }
|