DescriptionControl.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using System.Windows.Forms;
  3. using System.Drawing;
  4. using System.Reflection;
  5. using FastReport.Data;
  6. using FastReport.DevComponents.DotNetBar;
  7. using FastReport.Editor.Syntax.Parsers;
  8. namespace FastReport.Controls
  9. {
  10. internal class DescriptionControl : Panel
  11. {
  12. private LabelX lblDescription;
  13. private void RecalcDescriptionSize()
  14. {
  15. // hack to force GetPreferredSize do the work
  16. lblDescription.UseMnemonic = false;
  17. int maxWidth = Width - SystemInformation.VerticalScrollBarWidth - 8;
  18. Size preferredSize = lblDescription.GetPreferredSize(new Size(maxWidth, 0));
  19. lblDescription.Size = preferredSize;
  20. if (RightToLeft == RightToLeft.Yes)
  21. {
  22. lblDescription.Left = preferredSize.Height > Height ? maxWidth - preferredSize.Width + 8 : Width - preferredSize.Width;
  23. }
  24. }
  25. protected override void OnSizeChanged(EventArgs e)
  26. {
  27. base.OnSizeChanged(e);
  28. RecalcDescriptionSize();
  29. }
  30. public void ShowDescription(Report report, object info)
  31. {
  32. string descr = "";
  33. if (info is SystemVariable)
  34. {
  35. descr = "<b>" + (info as SystemVariable).Name + "</b>";
  36. descr += "<br/><br/>" + ReflectionRepository.DescriptionHelper.GetDescription(info.GetType());
  37. }
  38. else if (info is MethodInfo)
  39. {
  40. descr = report.CodeHelper.GetMethodSignature(info as MethodInfo, true);
  41. descr += "<br/><br/>" + ReflectionRepository.DescriptionHelper.GetDescription(info as MethodInfo);
  42. foreach (ParameterInfo parInfo in (info as MethodInfo).GetParameters())
  43. {
  44. // special case - skip "thisReport" parameter
  45. if (parInfo.Name == "thisReport")
  46. continue;
  47. string s = ReflectionRepository.DescriptionHelper.GetDescription(parInfo);
  48. s = s.Replace("<b>", "{i}").Replace("</b>:", "{/i}").Replace("&", "&amp;").Replace("<", "&lt;").Replace(">", "&gt;").Replace("{i}", "<i>").Replace("{/i}", "</i>");
  49. descr += "<br/><br/>" + s;
  50. }
  51. }
  52. descr = descr.Replace("\t", "<br/>");
  53. lblDescription.Text = descr;
  54. RecalcDescriptionSize();
  55. }
  56. public DescriptionControl()
  57. {
  58. lblDescription = new LabelX();
  59. lblDescription.AntiAlias = false;
  60. lblDescription.PaddingLeft = 2;
  61. lblDescription.PaddingRight = 2;
  62. lblDescription.PaddingTop = 2;
  63. lblDescription.TextLineAlignment = StringAlignment.Near;
  64. lblDescription.UseMnemonic = false;
  65. lblDescription.WordWrap = true;
  66. Controls.Add(lblDescription);
  67. lblDescription.BackColor = SystemColors.Window;
  68. AutoScroll = true;
  69. BackColor = SystemColors.Window;
  70. }
  71. }
  72. }