26 |
27 | Начиная с версии 1.2.0.0 есть возможность загружать в дизайнер формы из сохраненного файла сценария os.
28 | Не любого сценария, а именно сохраненного из дизайнера. При этом будет сохранена наработанная логика.
29 |
30 |
31 | При сохранении в формате os будет промежуточно создан текст файла osd, закодирован в строку Base64,
32 | которая будет присвоена переменной osdText и помещена как комментарий в
33 | процедуру Процедура ПодготовкаКомпонентов() или Процедура ПриСозданииФормы(_Форма) Экспорт.
34 |
35 |
36 | Перем Ф;
37 | Перем Форма_0;
38 |
39 | Процедура ПодготовкаКомпонентов()
40 | // ВАЖНО: Необходимая процедура для поддержки конструктора — не изменяйте содержимое этой процедуры с помощью редактора кода.
41 | // osdText = "WzzQmtC+0L3RgdGC0YDRg9C60YLQvtGA0YtdDQrQpNC+0YDQvNCwXzAgPSDQpC7QpNC+0YDQvNCwKCk7DQpb0JrQvtC90YHRgtGA0YPQutGC0L7RgNGLPl0NCls80KHQstC+0LnRgdGC0LLQsF0NCls80KTQvtGA0LzQsF8wXQ0K0KTQvtGA0LzQsF8wLtCg0LDQt9C80LXRgCA9INCkLtCg0LDQt9C80LXRgCg2NDAsIDQ4MCk7DQrQpNC+0YDQvNCwXzAu0J/Rg9GC0YwgPSAiQzpcNDQ0XNCg0LDQt9GA0LDQsdC+0YLQutCwXDIyMi5vcyI7DQrQpNC+0YDQvNCwXzAu0KHRgtC40LvRjNCh0LrRgNC40L/RgtCwID0gItCh0YLQuNC70YzQodC60YDQuNC/0YLQsCI7DQrQpNC+0YDQvNCwXzAu0KLQtdC60YHRgiA9ICLQpNC+0YDQvNCwXzAiOw0K0KTQvtGA0LzQsF8wLtCY0LzRj9Ce0LHRitC10LrRgtCw0KTQvtGA0LzRi9CU0LvRj9Ce0LTQvdC+0KHQutGA0LjQv9GC0LAgPSAi0KQiOw0KW9Ck0L7RgNC80LBfMD5dDQpb0KHQstC+0LnRgdGC0LLQsD5dDQo=";
42 | ПодключитьВнешнююКомпоненту("C:\444\111\OneScriptForms\OneScriptForms\bin\Debug\OneScriptForms.dll");
43 | Ф = Новый ФормыДляОдноСкрипта();
44 |
45 | Форма_0 = Ф.Форма();
46 | Форма_0.Отображать = Истина;
47 | Форма_0.Показать();
48 | Форма_0.Активизировать();
49 |
50 | Форма_0.Размер = Ф.Размер(640, 480);
51 | Форма_0.Текст = "Форма_0";
52 |
53 | КонецПроцедуры
54 |
55 | ПодготовкаКомпонентов();
56 |
57 | // ...
58 |
59 | Ф.ЗапуститьОбработкуСобытий();
60 |
61 |
62 | Процедура инициализации Процедура ПодготовкаКомпонентов() или Процедура ПриСозданииФормы(_Форма) Экспорт (зависит от свойства формы СтильСкрипта)
63 | является автоматически сформированной. Не изменяйте её содержимое. Весь ваш код вы можете вносить в любых других частях сценария, дизайнер их не затронет.
64 |
65 |
66 | Если форма будет работать как единственная или главная в вашем приложении, лучше подойдет значение СтильСкрипта.
67 | Если приложение будет состоять из множества форм, тогда у подчиненных форм, открываемых из главной формы или у диалоговых форм лучше
68 | подойдет значение СтильПриложения.
69 |
70 |
Поменять значение свойства формы СтильСкрипта можно в любое время, но рекомендую определиться с этим в самом начале проектирования формы.
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/OneScriptFormsDesigner/OneScriptFormsDesigner/DataGridComboBoxColumnStyle.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 |
3 | namespace osfDesigner
4 | {
5 | public class DataGridComboBoxColumnStyle : System.Windows.Forms.DataGridTextBoxColumn
6 | {
7 | private osfDesigner.HorizontalAlignment _Alignment;
8 | private osfDesigner.ComboBox _ComboBox = new osfDesigner.ComboBox();
9 |
10 | public DataGridComboBoxColumnStyle()
11 | {
12 | _Alignment = (osfDesigner.HorizontalAlignment)(base.Alignment);
13 | }
14 |
15 | [DisplayName("Выравнивание")]
16 | [Description("Возвращает или задает выравнивание текста в колонке.")]
17 | [Category("Показать")]
18 | [Browsable(true)]
19 | public new HorizontalAlignment Alignment
20 | {
21 | get { return _Alignment; }
22 | set
23 | {
24 | base.Alignment = (System.Windows.Forms.HorizontalAlignment)value;
25 | _Alignment = value;
26 | }
27 | }
28 |
29 | [DisplayName("ИмяСтиля")]
30 | [Category("Прочее")]
31 | [Browsable(true)]
32 | [ReadOnly(true)]
33 | public string NameStyle { get; set; }
34 |
35 | [DisplayName("Текст")]
36 | [Category("Прочее")]
37 | [Browsable(true)]
38 | public string Text { get; set; }
39 |
40 | [DisplayName("ИмяОтображаемого")]
41 | [Description("Возвращает или задает имя элемента данных, на который отображается стиль столбца.")]
42 | [Category("Прочее")]
43 | [Browsable(true)]
44 | public new string MappingName
45 | {
46 | get { return base.MappingName; }
47 | set { base.MappingName = value; }
48 | }
49 |
50 | [DisplayName("ПолеВыбора")]
51 | [Description("Возвращает объект класса ПолеВыбора (ComboBox), используемый в стиле колонки сетки данных.")]
52 | [Category("Прочее")]
53 | [Browsable(true)]
54 | [ReadOnly(true)]
55 | [TypeConverter(typeof(MyConverter))]
56 | public osfDesigner.ComboBox ComboBox
57 | {
58 | get { return _ComboBox; }
59 | }
60 |
61 | [DisplayName("ТекстЗаголовка")]
62 | [Description("Возвращает или задает текст заголовка колонки.")]
63 | [Category("Показать")]
64 | [Browsable(true)]
65 | public new string HeaderText
66 | {
67 | get { return base.HeaderText; }
68 | set { base.HeaderText = value; }
69 | }
70 |
71 | [DisplayName("ТолькоЧтение")]
72 | [Description("Возвращает или задает значение, указывающее, находится ли СтильКолонкиПолеВвода (DataGridTextBoxColumn) в состоянии 'только для чтения'.")]
73 | [Category("Прочее")]
74 | [Browsable(true)]
75 | [TypeConverter(typeof(MyBooleanConverter))]
76 | public new bool ReadOnly
77 | {
78 | get { return base.ReadOnly; }
79 | set { base.ReadOnly = value; }
80 | }
81 |
82 | [DisplayName("Ширина")]
83 | [Description("Возвращает или задает ширину колонки.")]
84 | [Category("Макет")]
85 | [Browsable(true)]
86 | public new int Width
87 | {
88 | get { return base.Width; }
89 | set { base.Width = value; }
90 | }
91 |
92 | [Browsable(false)]
93 | [ReadOnly(true)]
94 | public new string NullText { get; set; }
95 |
96 | [Browsable(false)]
97 | [ReadOnly(true)]
98 | public new string Format { get; set; }
99 |
100 | [Browsable(false)]
101 | public string RequiredValues
102 | {
103 | get
104 | {
105 | return @"
106 | Текст ==
107 | ";
108 | }
109 | }
110 |
111 | [Browsable(false)]
112 | public string DefaultValues { get; set; }
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/OneScriptFormsDesigner/OneScriptFormsDesigner/DataGridTextBoxColumn.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 |
3 | namespace osfDesigner
4 | {
5 | public class DataGridTextBoxColumn : System.Windows.Forms.DataGridTextBoxColumn
6 | {
7 |
8 | private string _DoubleClick_osf;
9 |
10 | public DataGridTextBoxColumn()
11 | {
12 | }
13 |
14 | [DisplayName("Выравнивание")]
15 | [Description("Возвращает или задает выравнивание текста в колонке.")]
16 | [Category("Показать")]
17 | [Browsable(true)]
18 | public new HorizontalAlignment Alignment
19 | {
20 | get { return (HorizontalAlignment)base.Alignment; }
21 | set { base.Alignment = (System.Windows.Forms.HorizontalAlignment)value; }
22 | }
23 |
24 | [DisplayName("ИмяОтображаемого")]
25 | [Description("Возвращает или задает имя элемента данных, на который отображается стиль колонки.")]
26 | [Category("Прочее")]
27 | [Browsable(true)]
28 | public new string MappingName
29 | {
30 | get { return base.MappingName; }
31 | set { base.MappingName = value; }
32 | }
33 |
34 | [DisplayName("ТекстЗаголовка")]
35 | [Description("Возвращает или задает текст заголовка колонки.")]
36 | [Category("Показать")]
37 | [Browsable(true)]
38 | public new string HeaderText
39 | {
40 | get { return base.HeaderText; }
41 | set { base.HeaderText = value; }
42 | }
43 |
44 | [DisplayName("ТолькоЧтение")]
45 | [Description("Возвращает или задает значение, указывающее, находится ли СтильКолонкиПолеВвода (DataGridTextBoxColumn) в состоянии 'только для чтения'.")]
46 | [Category("Прочее")]
47 | [Browsable(true)]
48 | [TypeConverter(typeof(MyBooleanConverter))]
49 | public new bool ReadOnly
50 | {
51 | get { return base.ReadOnly; }
52 | set { base.ReadOnly = value; }
53 | }
54 |
55 | [DisplayName("Ширина")]
56 | [Description("Возвращает или задает ширину колонки.")]
57 | [Category("Макет")]
58 | [Browsable(true)]
59 | public new int Width
60 | {
61 | get { return base.Width; }
62 | set { base.Width = value; }
63 | }
64 |
65 | [Browsable(false)]
66 | [ReadOnly(true)]
67 | public new string NullText { get; set; }
68 |
69 | [Browsable(false)]
70 | [ReadOnly(true)]
71 | public new string Format { get; set; }
72 |
73 | [DisplayName("ДвойноеНажатие")]
74 | [Description("Возвращает или задает код для выполнения, когда ячейка колонки дважды щелкнута.")]
75 | [Category("Прочее")]
76 | [Browsable(true)]
77 | public string DoubleClick_osf
78 | {
79 | get { return _DoubleClick_osf; }
80 | set { _DoubleClick_osf = value; }
81 | }
82 |
83 | [DisplayName("ИмяСтиля")]
84 | [Category("Прочее")]
85 | [Browsable(true)]
86 | [ReadOnly(true)]
87 | public string NameStyle { get; set; }
88 |
89 | [DisplayName("Текст")]
90 | [Category("Прочее")]
91 | [Browsable(true)]
92 | public string Text { get; set; }
93 |
94 | private System.Collections.Hashtable toolTip = new System.Collections.Hashtable();
95 | [Browsable(false)]
96 | public System.Collections.Hashtable ToolTip
97 | {
98 | get { return toolTip; }
99 | set { toolTip = value; }
100 | }
101 |
102 | [Browsable(false)]
103 | public string DefaultValues { get; set; }
104 |
105 | [Browsable(false)]
106 | public string RequiredValues
107 | {
108 | get
109 | {
110 | return @"
111 | Текст ==
112 | ";
113 | }
114 | }
115 | }
116 | }
117 |
--------------------------------------------------------------------------------
/OneScriptFormsDesigner/OneScriptFormsDesigner/MyLocationEditor.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Drawing.Design;
3 | using System.Drawing;
4 | using System.Windows.Forms.Design;
5 | using System;
6 |
7 | namespace osfDesigner
8 | {
9 | public class MyLocationEditor : UITypeEditor
10 | {
11 | public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
12 | {
13 | IWindowsFormsEditorService wfes = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
14 |
15 | if (wfes != null)
16 | {
17 | frmXY _frmXY = new frmXY();
18 |
19 | _frmXY.numericUpDown1.Value = ((Point)value).X;
20 | _frmXY.numericUpDown2.Value = ((Point)value).Y;
21 | _frmXY._wfes = wfes;
22 |
23 | wfes.DropDownControl(_frmXY);
24 | int _X = Convert.ToInt32(_frmXY.numericUpDown1.Value);
25 | int _Y = Convert.ToInt32(_frmXY.numericUpDown2.Value);
26 | value = new Point(_X, _Y);
27 | }
28 | return value;
29 | }
30 |
31 | public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
32 | {
33 | return UITypeEditorEditStyle.Modal;
34 | }
35 | }
36 |
37 | public class frmXY : System.Windows.Forms.Form
38 | {
39 | private System.Windows.Forms.Label label1;
40 | public System.Windows.Forms.NumericUpDown numericUpDown1;
41 | private System.Windows.Forms.Label label2;
42 | public System.Windows.Forms.NumericUpDown numericUpDown2;
43 | private Container components = null;
44 |
45 | public IWindowsFormsEditorService _wfes;
46 |
47 | public frmXY()
48 | {
49 | ClientSize = new Size(192, 70);
50 | ControlBox = false;
51 | FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
52 | MaximizeBox = false;
53 | MinimizeBox = false;
54 | Name = "frmXY";
55 | ShowInTaskbar = false;
56 | Closed += frmXY_Closed;
57 |
58 | label1 = new System.Windows.Forms.Label();
59 | label1.Parent = this;
60 | label1.Location = new Point(10, 10);
61 | label1.Text = "Икс";
62 | label1.Width = 55;
63 |
64 | numericUpDown1 = new System.Windows.Forms.NumericUpDown();
65 | numericUpDown1.Parent = this;
66 | numericUpDown1.Location = new Point(label1.Left + label1.Width + 5, label1.Top);
67 | numericUpDown1.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
68 | numericUpDown1.ThousandsSeparator = true;
69 | numericUpDown1.Minimum = 0;
70 | numericUpDown1.Maximum = 7680;
71 |
72 | label2 = new System.Windows.Forms.Label();
73 | label2.Parent = this;
74 | label2.Location = new Point(label1.Left, label1.Bottom + 5);
75 | label2.Text = "Игрек";
76 | label2.Width = 55;
77 |
78 | numericUpDown2 = new System.Windows.Forms.NumericUpDown();
79 | numericUpDown2.Parent = this;
80 | numericUpDown2.Location = new Point(label2.Left + label2.Width + 5, label2.Top);
81 | numericUpDown2.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
82 | numericUpDown2.ThousandsSeparator = true;
83 | numericUpDown2.Minimum = 0;
84 | numericUpDown2.Maximum = 4800;
85 |
86 | TopLevel = false;
87 | }
88 |
89 | private void frmXY_Closed(object sender, EventArgs e)
90 | {
91 | _wfes.CloseDropDown();
92 | }
93 |
94 | protected override void Dispose(bool disposing)
95 | {
96 | if (disposing)
97 | {
98 | if (components != null)
99 | {
100 | components.Dispose();
101 | }
102 | }
103 | base.Dispose(disposing);
104 | }
105 | }
106 | }
107 |
--------------------------------------------------------------------------------