示例#1
0
        public void CargaHijos()
        {
            //me traigo la lista de dependencias
            Hijos = new List <CTabla>();
            List <Objetos.CSysObject> l = DB.DameDependencias(Nombre);

            //recorro la lista de hijos para ver cuales son sus hijos
            foreach (Objetos.CSysObject obj in l)
            {
                if (OnBuscaHijo != null)
                {
                    CTabla t = OnBuscaHijo(obj.Nombre);
                    if (t != null)
                    {
                        //veo si ya lo tengo
                        bool encontrado = false;
                        foreach (CTabla ta in Hijos)
                        {
                            if (ta.Nombre == t.Nombre)
                            {
                                encontrado = true;
                                break;
                            }
                        }
                        if (encontrado == false)
                        {
                            // no esta, por lo que hay que agregarlo
                            Hijos.Add(t);
                            t.AsignaPadre(this);
                        }
                    }
                }
            }
        }
示例#2
0
 private void Diseñador_MouseUp(object sender, MouseEventArgs e)
 {
     if (TablaActiva != null)
     {
         if (BMouseDown == true)
         {
             Dibuja();
         }
     }
     BMouseDown  = false;
     TablaActiva = null;
 }
示例#3
0
        private void MuestraTabla(string nombre)
        {
            Graphics gp = Diseñador.CreateGraphics();
            CTabla   t  = new CTabla(DB, nombre, gp);

            //Diseñador.MouseClick += new MouseEventHandler(t.Diseñador_MouseClick);
            t.OnCodigo       += new Visor_sql_2015.Formularios.OnCodigoEvent(OnCodigoE);
            t.OnDependencias += new Visor_sql_2015.Formularios.OnCodigoEvent(OnDependenciasE);
            t.OnTrasar       += new Visor_sql_2015.Formularios.OnCodigoEvent(OnTrasarE);
            t.OnDocuemntar   += new Visor_sql_2015.Formularios.OnDocuemntarEvent(OnDocuemntarE);
            t.OnEjecuta      += new Visor_sql_2015.Formularios.OnCodigoEvent(OnEjecutaE);
            Tablas.Add(t);
        }
示例#4
0
 private void Diseñador_MouseDown(object sender, MouseEventArgs e)
 {
     PMouse      = new Point(e.X + panel1.HorizontalScroll.Value, e.Y + panel1.VerticalScroll.Value);
     BMouseDown  = true;
     TablaActiva = null;
     //ahora checo si el raton esta posado sobre una de las tablas
     foreach (CTabla obj in Tablas)
     {
         if (obj.EstaDentroElMouse(PMouse) == true)
         {
             //el raton esta dentro del area de la tabla
             TablaActiva = obj;
         }
     }
 }
示例#5
0
 public void AsignaPadre(CTabla t)
 {
     if (Padres == null)
     {
         Padres = new List <CTabla>();
     }
     //busco si ya esta agregado
     foreach (CTabla obj in Padres)
     {
         if (obj.Nombre == t.Nombre)
         {
             //ya esta
             return;
         }
     }
     // lo agrego
     Padres.Add(t);
 }
示例#6
0
 private void Diseñador_MouseClick(object sender, MouseEventArgs e)
 {
     PMouse      = new Point(e.X + panel1.HorizontalScroll.Value, e.Y + panel1.VerticalScroll.Value);
     BMouseDown  = true;
     TablaActiva = null;
     //ahora checo si el raton esta posado sobre una de las tablas
     foreach (CTabla obj in Tablas)
     {
         if (obj.EstaDentroElMouse(PMouse) == true)
         {
             //el raton esta dentro del area de la tabla
             TablaActiva = obj;
             MouseEventArgs me = new MouseEventArgs(e.Button, e.Clicks, PMouse.X, PMouse.Y, e.Delta);
             Point          p  = new Point(e.X, e.Y);
             TablaActiva.Diseñador_MouseClick(sender, me, p);
             return;
         }
     }
 }
示例#7
0
 private void Diseñador_MouseDoubleClick(object sender, MouseEventArgs e)
 {
     PMouse      = new Point(e.X + panel1.HorizontalScroll.Value, e.Y + panel1.VerticalScroll.Value);
     BMouseDown  = true;
     TablaActiva = null;
     //ahora checo si el raton esta posado sobre una de las tablas
     foreach (CTabla obj in Tablas)
     {
         if (obj.EstaDentroElMouse(PMouse) == true)
         {
             //el raton esta dentro del area de la tabla
             TablaActiva = obj;
             if (OnVerObjeto != null)
             {
                 Visor_sql_2015.Objetos.CSysObject obj2 = new Visor_sql_2015.Objetos.CSysObject();
                 obj2.Nombre     = TablaActiva.Nombre;
                 obj2.TipoObjeto = Visor_sql_2015.Controladores_DB.TIPOOBJETO.TABLAX;
                 OnVerObjeto(obj2);
             }
             return;
         }
     }
 }
示例#8
0
        public void ConectaHijo(CTabla hijo, Brush b)
        {
            int   Distancia = 5;
            Point pmedio = new Point();
            Point ph = new Point(), pd = new Point(), ph1 = new Point(), ph2 = new Point();
            //Calculo el punto intermedio en el que hay que hacer el quiebre
            //calculo el punto de donde se va a iniciar a dibujar la linea
            //primero checo el punto con respecto a la tabla padre
            Pen p = new Pen(b, 1);

            //veo en que cuadrante esta la tabla hija con respecto a la tabla padre
            if (PuntoMedio.X >= hijo.PuntoMedio.X && PuntoMedio.Y >= hijo.PuntoMedio.Y)
            {
                //cuadrante 1
                pmedio.X = PuntoMedio.X;
                pmedio.Y = hijo.PuntoMedio.Y;
                ph.X     = pmedio.X;
                ph.Y     = InitPoint.Y;
                pd.X     = hijo.EndPoint.X;
                pd.Y     = hijo.PuntoMedio.Y;
                ph1.X    = ph.X - Distancia;
                ph1.Y    = ph.Y - Distancia;
                ph2.X    = ph.X + Distancia;
                ph2.Y    = ph.Y - Distancia;
                //veo si la tabla hija esta dentro del harea de la tabla padre
                if (hijo.PuntoMedio.Y >= InitPoint.Y && hijo.PuntoMedio.Y <= EndPoint.Y)
                {
                    //modifico los puntos
                    ph.X  = InitPoint.X;
                    ph.Y  = hijo.PuntoMedio.Y;
                    ph1.X = ph.X - Distancia;
                    ph1.Y = ph.Y - Distancia;
                    ph2.X = ph.X - Distancia;
                    ph2.Y = ph.Y + Distancia;
                }
            }
            if (PuntoMedio.X < hijo.PuntoMedio.X && PuntoMedio.Y >= hijo.PuntoMedio.Y)
            {
                //cuadrante 2
                pmedio.X = PuntoMedio.X;
                pmedio.Y = hijo.PuntoMedio.Y;
                ph.X     = pmedio.X;
                ph.Y     = InitPoint.Y;
                pd.X     = hijo.InitPoint.X;
                pd.Y     = hijo.PuntoMedio.Y;
                ph1.X    = ph.X - Distancia;
                ph1.Y    = ph.Y - Distancia;
                ph2.X    = ph.X + Distancia;
                ph2.Y    = ph.Y - Distancia;
                if (hijo.PuntoMedio.Y >= InitPoint.Y && hijo.PuntoMedio.Y <= EndPoint.Y)
                {
                    //modifico los puntos
                    ph.X  = EndPoint.X;
                    ph.Y  = hijo.PuntoMedio.Y;
                    ph1.X = ph.X + Distancia;
                    ph1.Y = ph.Y - Distancia;
                    ph2.X = ph.X + Distancia;
                    ph2.Y = ph.Y + Distancia;
                }
            }
            if (PuntoMedio.X < hijo.PuntoMedio.X && PuntoMedio.Y < hijo.PuntoMedio.Y)
            {
                //cuadrante 3
                pmedio.X = PuntoMedio.X;
                pmedio.Y = hijo.PuntoMedio.Y;
                ph.X     = pmedio.X;
                ph.Y     = EndPoint.Y;
                pd.X     = hijo.InitPoint.X;
                pd.Y     = hijo.PuntoMedio.Y;
                ph1.X    = ph.X - Distancia;
                ph1.Y    = ph.Y + Distancia;
                ph2.X    = ph.X + Distancia;
                ph2.Y    = ph.Y + Distancia;
                if (hijo.PuntoMedio.Y >= InitPoint.Y && hijo.PuntoMedio.Y <= EndPoint.Y)
                {
                    //modifico los puntos
                    ph.X  = EndPoint.X;
                    ph.Y  = hijo.PuntoMedio.Y;
                    ph1.X = ph.X + Distancia;
                    ph1.Y = ph.Y - Distancia;
                    ph2.X = ph.X + Distancia;
                    ph2.Y = ph.Y + Distancia;
                }
            }
            if (PuntoMedio.X >= hijo.PuntoMedio.X && PuntoMedio.Y < hijo.PuntoMedio.Y)
            {
                //cuadrante 4
                pmedio.X = PuntoMedio.X;
                pmedio.Y = hijo.PuntoMedio.Y;
                ph.X     = pmedio.X;
                ph.Y     = EndPoint.Y;
                pd.X     = hijo.EndPoint.X;
                pd.Y     = hijo.PuntoMedio.Y;
                ph1.X    = ph.X - Distancia;
                ph1.Y    = ph.Y + Distancia;
                ph2.X    = ph.X + Distancia;
                ph2.Y    = ph.Y + Distancia;
                //veo si la tabla hija esta dentro del harea de la tabla padre
                if (hijo.PuntoMedio.Y >= InitPoint.Y && hijo.PuntoMedio.Y <= EndPoint.Y)
                {
                    //modifico los puntos
                    ph.X  = InitPoint.X;
                    ph.Y  = hijo.PuntoMedio.Y;
                    ph1.X = ph.X - Distancia;
                    ph1.Y = ph.Y - Distancia;
                    ph2.X = ph.X - Distancia;
                    ph2.Y = ph.Y + Distancia;
                }
            }
            if (ph.X >= hijo.X && ph.X <= hijo.X + hijo.Width)
            {
                if (hijo.Y < Y)
                {
                    pmedio.Y = hijo.EndPoint.Y - 1;
                    pd.Y     = hijo.EndPoint.Y - 1;
                }
                else
                {
                    pmedio.Y = hijo.InitPoint.Y;
                    pd.Y     = hijo.InitPoint.Y;
                }
            }
            GP.DrawLine(p, ph, pmedio);
            GP.DrawLine(p, pd, pmedio);
            //dibujo laslineas de la felcha
            GP.DrawLine(p, ph, ph1);
            GP.DrawLine(p, ph, ph2);
            // hijo.Pintate(GP);
        }