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); } } } } }
private void Diseñador_MouseUp(object sender, MouseEventArgs e) { if (TablaActiva != null) { if (BMouseDown == true) { Dibuja(); } } BMouseDown = false; TablaActiva = null; }
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); }
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; } } }
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); }
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; } } }
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; } } }
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); }