12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using System;
- using System.Windows.Forms;
- using System.Drawing;
- using System.Reflection;
- using FastReport.Data;
- using FastReport.DevComponents.DotNetBar;
- using FastReport.Editor.Syntax.Parsers;
- namespace FastReport.Controls
- {
- internal class DescriptionControl : Panel
- {
- private LabelX lblDescription;
- private void RecalcDescriptionSize()
- {
- // hack to force GetPreferredSize do the work
- lblDescription.UseMnemonic = false;
- int maxWidth = Width - SystemInformation.VerticalScrollBarWidth - 8;
- Size preferredSize = lblDescription.GetPreferredSize(new Size(maxWidth, 0));
- lblDescription.Size = preferredSize;
- if (RightToLeft == RightToLeft.Yes)
- {
- lblDescription.Left = preferredSize.Height > Height ? maxWidth - preferredSize.Width + 8 : Width - preferredSize.Width;
- }
- }
- protected override void OnSizeChanged(EventArgs e)
- {
- base.OnSizeChanged(e);
- RecalcDescriptionSize();
- }
- public void ShowDescription(Report report, object info)
- {
- string descr = "";
- if (info is SystemVariable)
- {
- descr = "<b>" + (info as SystemVariable).Name + "</b>";
- descr += "<br/><br/>" + ReflectionRepository.DescriptionHelper.GetDescription(info.GetType());
- }
- else if (info is MethodInfo)
- {
- descr = report.CodeHelper.GetMethodSignature(info as MethodInfo, true);
- descr += "<br/><br/>" + ReflectionRepository.DescriptionHelper.GetDescription(info as MethodInfo);
- foreach (ParameterInfo parInfo in (info as MethodInfo).GetParameters())
- {
- // special case - skip "thisReport" parameter
- if (parInfo.Name == "thisReport")
- continue;
- string s = ReflectionRepository.DescriptionHelper.GetDescription(parInfo);
- s = s.Replace("<b>", "{i}").Replace("</b>:", "{/i}").Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("{i}", "<i>").Replace("{/i}", "</i>");
- descr += "<br/><br/>" + s;
- }
- }
- descr = descr.Replace("\t", "<br/>");
- lblDescription.Text = descr;
- RecalcDescriptionSize();
- }
- public DescriptionControl()
- {
- lblDescription = new LabelX();
- lblDescription.AntiAlias = false;
- lblDescription.PaddingLeft = 2;
- lblDescription.PaddingRight = 2;
- lblDescription.PaddingTop = 2;
- lblDescription.TextLineAlignment = StringAlignment.Near;
- lblDescription.UseMnemonic = false;
- lblDescription.WordWrap = true;
- Controls.Add(lblDescription);
- lblDescription.BackColor = SystemColors.Window;
- AutoScroll = true;
- BackColor = SystemColors.Window;
- }
- }
- }
|