public ucDataItemAdd(string dbName, int index, FieldInfo field, IDataFile db, IDataFieldEvent _fe)
        {
            int wi_Name = 110, wi_Max = 630, wi_ = 200;

            _Height = Height_Min;
            _Width  = wi_ + wi_Name + 8;
            string caption  = string.IsNullOrEmpty(field.CAPTION) ? field.NAME : field.CAPTION;
            Label  lbl_Name = new Label()
            {
                Dock = DockStyle.Left, Left = 4, Top = 0, Text = caption, AutoSize = false, Width = wi_Name, ForeColor = Color.Black, TextAlign = ContentAlignment.TopRight
            };

            this.Controls.Add(lbl_Name);

            if (field.TYPE_NAME == typeof(Byte).Name && field.KIT != ControlKit.CHECK)
            {
                ComboBox cbo = new ComboBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_, Height = _Height, DropDownStyle = ComboBoxStyle.DropDownList, Tag = field,
                };
                for (int k = 0; k < 256; k++)
                {
                    cbo.Items.Add(k.ToString());
                }
                cbo.SelectedIndex = 0;
                this.Controls.Add(cbo);
                cbo.BringToFront();
                return;
            }

            #region

            switch (field.KIT)
            {
            case ControlKit.LABEL:
                Label lbl = new Label()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, AutoSize = false, Width = wi_, Height = _Height - 5, BackColor = SystemColors.Control, Tag = field,
                };
                this.Controls.Add(lbl);
                lbl.BringToFront();
                break;

            case ControlKit.CHECK:
                CheckBox chk = new CheckBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Tag = field,
                };
                this.Controls.Add(chk);
                chk.BringToFront();
                break;

            case ControlKit.RADIO:
                RadioButton radio = new RadioButton()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Tag = field,
                };
                this.Controls.Add(radio);
                radio.BringToFront();
                break;

            case ControlKit.COLOR:
                Label lbl_Color = new Label()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, AutoSize = false, Width = 44, Height = _Height - 5, BackColor = Color.Gray, Tag = field,
                };
                this.Controls.Add(lbl_Color);
                lbl_Color.BringToFront();
                break;

            case ControlKit.SELECT:
                ComboBox cbo = new ComboBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_, Height = _Height, DropDownStyle = ComboBoxStyle.DropDownList, Tag = field,
                };
                IList lsi = db.GetComboboxItem(field);
                if (lsi != null && lsi.Count > 0)
                {
                    cbo.DisplayMember = field.JOIN_VIEW;
                    cbo.ValueMember   = field.JOIN_FIELD;
                    cbo.DataSource    = lsi;
                }
                this.Controls.Add(cbo);
                cbo.BringToFront();
                break;

            case ControlKit.TEXT_PASS:
                TextBox txt_Pass = new TextBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_, Height = _Height, PasswordChar = '*', BorderStyle = BorderStyle.FixedSingle, Multiline = false, ScrollBars = ScrollBars.None, WordWrap = false, Tag = field,
                };
                this.Controls.Add(txt_Pass);
                txt_Pass.BringToFront();
                break;

            case ControlKit.TEXT_DATE:
            case ControlKit.TEXT_DATETIME:
            case ControlKit.TEXT_TIME:
                DateTimePicker dt = new DateTimePicker()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, CustomFormat = "dd-MM-yyyy HH:mm:ss", Format = DateTimePickerFormat.Custom, Tag = field,
                };
                this.Controls.Add(dt);
                dt.BringToFront();
                break;

            case ControlKit.TEXT_EMAIL:
                TextBox txt_Email = new TextBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_, Height = _Height, BorderStyle = BorderStyle.FixedSingle, Multiline = false, ScrollBars = ScrollBars.None, WordWrap = false, Tag = field,
                };
                this.Controls.Add(txt_Email);
                txt_Email.BringToFront();
                break;

            case ControlKit.TEXT_FILE:
                TextBox txt_File = new TextBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_ - 30, Height = _Height, ReadOnly = true, BorderStyle = BorderStyle.FixedSingle, Multiline = false, ScrollBars = ScrollBars.None, WordWrap = false, Tag = field,
                };
                Button btn_Browser = new Button()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 28, Top = 0, Height = 18, Width = 30, Text = "...", FlatStyle = FlatStyle.Flat
                };
                this.Controls.AddRange(new Control[] { txt_File, btn_Browser });
                txt_File.BringToFront();
                btn_Browser.BringToFront();
                btn_Browser.Click += (se, ev) => select_File(txt_File);
                break;

            case ControlKit.TEXTAREA:
                _Height = Height_Max;
                _Width  = wi_Max + wi_Name + 8;
                TextBox text_area = new TextBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_Max, Height = _Height, BorderStyle = BorderStyle.FixedSingle, Multiline = true, ScrollBars = ScrollBars.Vertical, WordWrap = true, Tag = field,
                };
                this.Controls.Add(text_area);
                text_area.BringToFront();
                break;

            case ControlKit.LOOKUP:
                TextBox txt_Lookup = new TextBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_, Height = _Height, ReadOnly = true, BorderStyle = BorderStyle.FixedSingle, Multiline = false, ScrollBars = ScrollBars.None, WordWrap = false, Tag = field,
                };
                this.Controls.Add(txt_Lookup);
                txt_Lookup.BringToFront();
                break;

            case ControlKit.HTML:
                _Height = Height_Full;
                _Width  = wi_Max + wi_Name + 8;
                HtmlEditor html = new HtmlEditor(db, _fe)
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_Max, Height = _Height, BorderStyle = BorderStyle.FixedSingle, Tag = field,
                };
                this.Controls.Add(html);
                html.BringToFront();
                break;

            default:     //case ControlKit.TEXT: break;
                TextBox txt = new TextBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_, Height = _Height, BorderStyle = BorderStyle.FixedSingle, Multiline = false, ScrollBars = ScrollBars.None, WordWrap = false, Tag = field,
                };
                this.Controls.Add(txt);
                txt.BringToFront();
                break;
            }
            #endregion
        }
        public ucDataItemEdit(string dbName, int index, FieldInfo field, IDataFile db, IDataFieldEvent _fe)
        {
            int wi_Name = 110, wi_Max = 630, wi_ = 200;

            _Height = Height_Min;
            _Width  = wi_ + wi_Name + 8;
            string caption  = string.IsNullOrEmpty(field.CAPTION) ? field.NAME : field.CAPTION;
            Label  lbl_Name = new Label()
            {
                Dock = DockStyle.Left, Left = 4, Top = 0, Text = caption, AutoSize = false, Width = wi_Name, ForeColor = Color.Black, TextAlign = ContentAlignment.TopRight
            };

            this.Controls.Add(lbl_Name);

            if (field.TYPE_NAME == typeof(Byte).Name && field.KIT != ControlKit.CHECK)
            {
                ComboBox cbo = new ComboBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_, Height = _Height, DropDownStyle = ComboBoxStyle.DropDownList, Tag = field,
                };
                for (int k = 0; k < 256; k++)
                {
                    cbo.Items.Add(k.ToString());
                }
                cbo.SelectedIndex = 0;
                this.Controls.Add(cbo);
                cbo.BringToFront();
                return;
            }

            #region

            switch (field.KIT)
            {
            case ControlKit.LABEL:
                Label lbl = new Label()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, AutoSize = false, Width = wi_, Height = _Height - 5, BackColor = SystemColors.Control, Tag = field,
                };
                this.Controls.Add(lbl);
                if (field.Value != null)
                {
                    lbl.Text = field.Value.ToString();
                }
                lbl.BringToFront();
                break;

            case ControlKit.CHECK:
                CheckBox chk = new CheckBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Tag = field,
                };
                this.Controls.Add(chk);
                if (field.Value != null && field.Value.ToString() == "1")
                {
                    chk.Checked = true;
                }
                chk.BringToFront();
                break;

            case ControlKit.RADIO:
                RadioButton radio = new RadioButton()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Tag = field,
                };
                this.Controls.Add(radio);
                radio.BringToFront();
                break;

            case ControlKit.COLOR:
                Label lbl_Color = new Label()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, AutoSize = false, Width = 44, Height = _Height - 5, BackColor = Color.Gray, Tag = field,
                };
                this.Controls.Add(lbl_Color);
                if (field.Value != null)
                {
                    lbl_Color.Text = field.Value.ToString();
                }
                lbl_Color.BringToFront();
                break;

            case ControlKit.SELECT:
                #region

                ComboBox cbo = new ComboBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_, Height = _Height, DropDownStyle = ComboBoxStyle.DropDownList, Tag = field,
                };
                IList lsi = db.GetComboboxItem(field);
                if (lsi != null && lsi.Count > 0)
                {
                    List <string> lf = new List <string>();
                    foreach (object it in lsi)
                    {
                        object v = it.GetType().GetProperty(field.JOIN_FIELD).GetValue(it, null);
                        lf.Add(v == null ? "" : v.ToString());
                    }

                    List <string> lv = new List <string>();
                    foreach (object it in lsi)
                    {
                        object v = it.GetType().GetProperty(field.JOIN_VIEW).GetValue(it, null);
                        lv.Add(v == null ? "" : v.ToString());
                    }

                    for (int k = 0; k < lv.Count; k++)
                    {
                        cbo.Items.Add(new ComboboxItem()
                        {
                            Text = lv[k], Value = lf[k]
                        });
                    }
                }

                this.Controls.Add(cbo);

                if (field.Value != null)
                {
                    int kii = 0, _index = -1;
                    foreach (object myObj in lsi)
                    {
                        var lii = myObj.GetType().GetProperties().Select(pi => pi.GetValue(myObj, null)).Select(x => x == null ? "" : x.ToString()).ToList();
                        if (lii.IndexOf(field.Value.ToString()) != -1)
                        {
                            _index = kii;
                            break;
                        }
                        kii++;
                    }
                    if (_index != -1)
                    {
                        cbo.SelectedIndex = _index;
                    }
                }

                cbo.BringToFront();

                #endregion
                break;

            case ControlKit.TEXT_PASS:
                TextBox txt_Pass = new TextBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_, Height = _Height, PasswordChar = '*', BorderStyle = BorderStyle.FixedSingle, Multiline = false, ScrollBars = ScrollBars.None, WordWrap = false, Tag = field,
                };
                if (field.Value != null)
                {
                    txt_Pass.Text = field.Value.ToString();
                }
                this.Controls.Add(txt_Pass);
                txt_Pass.BringToFront();
                break;

            case ControlKit.TEXT_DATE:
            case ControlKit.TEXT_DATETIME:
            case ControlKit.TEXT_TIME:
                DateTimePicker dt = new DateTimePicker()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, CustomFormat = "dd-MM-yyyy HH:mm:ss", Format = DateTimePickerFormat.Custom, Tag = field,
                };
                this.Controls.Add(dt);
                dt.BringToFront();
                break;

            case ControlKit.TEXT_EMAIL:
                TextBox txt_Email = new TextBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_, Height = _Height, BorderStyle = BorderStyle.FixedSingle, Multiline = false, ScrollBars = ScrollBars.None, WordWrap = false, Tag = field,
                };
                if (field.Value != null)
                {
                    txt_Email.Text = field.Value.ToString();
                }
                this.Controls.Add(txt_Email);
                txt_Email.BringToFront();
                break;

            case ControlKit.TEXT_FILE:
                TextBox txt_File = new TextBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_ - 30, Height = _Height, ReadOnly = true, BorderStyle = BorderStyle.FixedSingle, Multiline = false, ScrollBars = ScrollBars.None, WordWrap = false, Tag = field,
                };
                Button btn_Browser = new Button()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 28, Top = 0, Height = 18, Width = 30, Text = "...", FlatStyle = FlatStyle.Flat
                };
                this.Controls.AddRange(new Control[] { txt_File, btn_Browser });
                if (field.Value != null)
                {
                    txt_File.Text = field.Value.ToString();
                }
                txt_File.BringToFront();
                btn_Browser.BringToFront();
                btn_Browser.Click += (se, ev) => select_File(txt_File);
                break;

            case ControlKit.TEXTAREA:
                _Height = Height_Max;
                _Width  = wi_Max + wi_Name + 8;
                TextBox text_area = new TextBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_Max, Height = _Height, BorderStyle = BorderStyle.FixedSingle, Multiline = true, ScrollBars = ScrollBars.Vertical, WordWrap = true, Tag = field,
                };
                this.Controls.Add(text_area);
                if (field.Value != null)
                {
                    text_area.Text = field.Value.ToString();
                }
                text_area.BringToFront();
                break;

            case ControlKit.LOOKUP:
                TextBox txt_Lookup = new TextBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_, Height = _Height, ReadOnly = true, BorderStyle = BorderStyle.FixedSingle, Multiline = false, ScrollBars = ScrollBars.None, WordWrap = false, Tag = field,
                };
                this.Controls.Add(txt_Lookup);
                if (field.Value != null)
                {
                    txt_Lookup.Text = field.Value.ToString();
                }
                txt_Lookup.BringToFront();
                break;

            case ControlKit.HTML:
                _Height = Height_Full;
                _Width  = wi_Max + wi_Name + 8;
                HtmlEditor html = new HtmlEditor(db, _fe)
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_Max, Height = _Height, BorderStyle = BorderStyle.FixedSingle, Tag = field,
                };
                this.Controls.Add(html);
                if (field.Value != null)
                {
                    html.Html = field.Value.ToString();
                }
                html.BringToFront();
                break;

            default:     //case ControlKit.TEXT: break;
                TextBox txt = new TextBox()
                {
                    Dock = DockStyle.Left, Left = wi_Name + 8, Top = 0, Width = wi_, Height = _Height, BorderStyle = BorderStyle.FixedSingle, Multiline = false, ScrollBars = ScrollBars.None, WordWrap = false, Tag = field,
                };
                this.Controls.Add(txt);
                if (field.Value != null)
                {
                    txt.Text = field.Value.ToString();
                }
                txt.BringToFront();
                break;
            }
            #endregion
        }