Ejemplo n.º 1
0
        private void InitializeView()
        {
            SuspendLayout();

            //Thread.Sleep(10);


            var md     = Controller.GetMetaData();
            var uqkeys = md.UniqueKeyFields.Flatten();
            var rqkeys = md.RequiredFields;
            var sizes  = md.Sizes;

            foreach (var cntrl in uqkeys.Where(x => Mapper.ContainsKey(x)))
            {
                Mapper[cntrl].BackColor = GREEN;
            }
            foreach (var cntrl in rqkeys.Where(x => Mapper.ContainsKey(x)))
            {
                Controls.Add(new Label()
                {
                    Name = $"RQ_{cntrl}", Text = "*", ForeColor = Color.Red, Top = Mapper[cntrl].Top + 5, Left = Mapper[cntrl].Left - 15
                });
            }
            foreach (var cntrl in sizes.Where(x => Mapper.ContainsKey(x.Key) && Mapper[x.Key] is TextBox))
            {
                ((TextBox)Mapper[cntrl.Key]).MaxLength = cntrl.Value;
            }

            new PermissionsHelper <M, C>(this);
            if (SaveButton != null)
            {
                SaveButton.Click += SaveModelEvent;
            }
            if (DeleteButton != null)
            {
                DeleteButton.Click += DeleteModelEvent;
            }
            if (NewButton != null)
            {
                NewButton.Click += NewModelEvent;
            }
            //var controls = (from cntrl in Mapper.Values orderby cntrl.TabIndex where cntrl.TabStop select cntrl);
            var xcld = new[] { "Id", "CreatedBy", "CreatedOn", "UpdatedBy", "UpdatedOn" };

            foreach (string cntrl in Mapper.Keys)
            {
                Mapper[cntrl].Name     = cntrl;
                Mapper[cntrl].KeyDown += MapperControlKeyDownEvent;
                if ((xcld.Contains(cntrl) || Mapper[cntrl].BackColor.Equals(GREEN)) == false)
                {
                    Mapper[cntrl].BackColor = Color.White;
                }
                if ("Id".Equals(cntrl))
                {
                    (Mapper[cntrl] as TextBox).ReadOnly = true;
                    Mapper[cntrl].TextChanged          += (ts, te) => {
                        SetModel(Mapper[cntrl].Text.ToInteger());
                    };
                }
            }
            foreach (var lookup in PickList)
            {
                lookup.Value.ReadOnly            = true;
                lookup.Key.PickListItemSelected += (int id) => {
                    lookup.Value.Text = id.ToString();
                };
                lookup.Value.KeyPress += (ls, le) => {
                    lookup.Key.PerformClick();
                    lookup.Key.SetFilter(le.KeyChar);
                };
            }
            DefaultControl = Mapper.Values.Where(x => x.TabStop).OrderBy(x => x.TabIndex).FirstOrDefault();
            DefaultControl?.Focus();
            ResumeLayout();
            Invalidate();
        }
Ejemplo n.º 2
0
        public BaseBinder() : base()
        {
            Controllers = new Dictionary <string, IDBController>();
            Mapper      = new Dictionary <string, Control>();
            Prop        = new Func <string, PropertyInfo>(x => typeof(M).GetProperty(x));
            isBoolean   = new Func <string, bool>(x => Mapper[x].GetType() == typeof(CheckBox) &&
                                                  Prop(x).PropertyType == typeof(bool));
            isDateTime = new Func <string, bool>(x => Prop(x).PropertyType == typeof(DateTime) ||
                                                 Prop(x).PropertyType == typeof(DateTime?));
            isInt64 = new Func <string, bool>(x => Prop(x).PropertyType == typeof(Int64));
            isInt32 = new Func <string, bool>(x => Prop(x).PropertyType == typeof(Int32) ||
                                              Prop(x).PropertyType == typeof(int));
            isDouble = new Func <string, bool>(x => Prop(x).PropertyType == typeof(double) ||
                                               Prop(x).PropertyType == typeof(Double));

            //Load += (s, e) => {
            //    if (DesignMode || (Site != null && Site.DesignMode)) return;
            new PermissionsHelper <M>(this);
            foreach (var control in Mapper.Values.OrderBy(x => x.TabIndex))
            {
                if (DefaultControl == null && control.TabStop)
                {
                    DefaultControl = control;
                }
                control.KeyDown += delegate(object sender, KeyEventArgs ea) {
                    if (ea.KeyCode == Keys.Enter)
                    {
                        ea.SuppressKeyPress = true;
                        ea.Handled          = true;
                        SendKeys.Send("\t");
                    }
                };
            }
            DefaultControl?.Focus();
            if (SaveButton != null)
            {
                SaveButton.Enabled = SaveButtonEnabled;
                SaveButton.Click  += (bs, be) => {
                    try {
                        Controller.Save(Model);
                        Model = Controller.Find(Model, Controller.GetMetaData().UniqueKeyFields.ToArray());
                        AfterSave?.Invoke();
                        DefaultControl.Focus();
                        DefaultControl.Select();
                    }catch (Exception ex) {
                        FormsHelper.Error(ex.Message);
                    }
                };
            }
            if (DeleteButton != null)
            {
                DeleteButton.Enabled = DeleteButtonEnabled;
                DeleteButton.Click  += (bs, be) => { Controller.Delete(Model); NewButton?.PerformClick(); };
            }
            if (NewButton != null)
            {
                NewButton.Enabled = NewButtonEnabled;
                NewButton.Click  += (bs, be) => { Model = Controller.NewModel <M>(); };
            }
            //};
        }