private void DrawJoin(Graphics g, QueryDesignJoinControl join) { Pen pen = Pens.Gray; int extwi = 40; if (join.LeftTable.Left < join.RightTable.Left) { Point src = new Point(join.LeftTable.Right, join.LeftTable.Top + join.LeftTable.GetColY(join.LeftCol)); Point dst = new Point(join.RightTable.Left, join.RightTable.Top + join.RightTable.GetColY(join.RightCol)); g.DrawLine(pen, src.X, src.Y, src.X + extwi, src.Y); g.DrawLine(pen, src.X + extwi, src.Y, dst.X - extwi, dst.Y); g.DrawLine(pen, dst.X - extwi, dst.Y, dst.X, dst.Y); PlaceJoin(join, src, dst); } else { Point src = new Point(join.LeftTable.Left, join.LeftTable.Top + join.LeftTable.GetColY(join.LeftCol)); Point dst = new Point(join.RightTable.Right, join.RightTable.Top + join.RightTable.GetColY(join.RightCol)); g.DrawLine(pen, src.X, src.Y, src.X - extwi, src.Y); g.DrawLine(pen, src.X - extwi, src.Y, dst.X + extwi, dst.Y); g.DrawLine(pen, dst.X + extwi, dst.Y, dst.X, dst.Y); PlaceJoin(join, src, dst); } }
private void PlaceJoin(QueryDesignJoinControl join, Point a, Point b) { int x = (a.X + b.X) / 2 - join.Width / 2; int y = (a.Y + b.Y) / 2 - join.Height / 2; if (x != join.Left || y != join.Top) { join.Left = x; join.Top = y; } }
public void AddJoin(QueryDesignTableFrame tbl1, string col1, QueryDesignTableFrame tbl2, string col2, bool refresh) { QueryDesignJoinControl join = new QueryDesignJoinControl(this, tbl1, col1, tbl2, col2); m_joins.Add(join); panel1.Controls.Add(join); if (refresh) { Redraw(); ReflectChanges(); } }
public new void Load(XmlElement xml) { m_loading = true; this.LoadPropertiesCore(xml); foreach (XmlElement xtbl in xml.SelectNodes("Table")) { var tbl = new QueryDesignTableFrame(xtbl, this); m_tables.Add(tbl); panel1.Controls.Add(tbl); } foreach (XmlElement xjoin in xml.SelectNodes("Join")) { var join = new QueryDesignJoinControl(xjoin, this); m_joins.Add(join); panel1.Controls.Add(join); } foreach (XmlElement xcol in xml.SelectNodes("Column")) { int newrow = dataGridColumns.Rows.Add(); var col = new DesignedColumn(this, dataGridColumns.Rows[newrow], xcol); col.Table.m_table.CheckColumn(col.ColumnName); } foreach (XmlElement xord in xml.SelectNodes("OrderBy")) { var ord = new DesignedOrder(xord, this); lbxSortedColumns.Items.Add(ord); } var cx = xml.FindElement("Filter"); if (cx != null) { m_condDesign.LoadFromXml(cx); } m_loading = false; ReloadAll(); Redraw(); }
public void RemoveJoin(QueryDesignJoinControl join) { m_joins.Remove(join); join.Dispose(); ReloadAll(); }
public DesignedJoin(QueryDesignFrame frame, QueryDesignJoinControl join) { m_join = join; m_frame = frame; }