//Event trên Panel protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) { foreach (Control ctr in this.Controls) { if (ctr.GetType().Name == "TableShape") { Point centerTable1 = new Point(ctr.Location.X + ctr.Width / 2, ctr.Location.Y + ctr.Height / 2); TableShape temp = (TableShape)ctr; foreach (FKShape fk in temp.listFK) { Point centerTable2 = new Point(fk.tableReference.Location.X + fk.tableReference.Width / 2, fk.tableReference.Location.Y + fk.tableReference.Height / 2); e.Graphics.DrawLine(new Pen(Color.Black, 1), centerTable1, centerTable2); } } } }
void shape_MouseMove(object sender, MouseEventArgs e) { TableShape shape = (TableShape)sender; if (isResizing) { if (shape.Cursor == Cursors.SizeNWSE) { shape.Width = e.X; shape.Height = e.Y; } if (shape.Cursor == Cursors.SizeWE) { shape.Width = e.X; } if (shape.Cursor == Cursors.SizeNS) { shape.Height = e.Y; } this.Invalidate(); } else { shape.Cursor = Cursors.Arrow; if ((e.X + 5) >= shape.Width) { shape.Cursor = Cursors.SizeWE; } if ((e.Y + 5) >= shape.Height) { shape.Cursor = Cursors.SizeNS; } if ((e.X + 5) >= shape.Width && (e.Y + 5) >= shape.Height) { shape.Cursor = Cursors.SizeNWSE; } } if (isMoving) { shape.Left += e.X - mousePoint.X; shape.Top += e.Y - mousePoint.Y; this.Invalidate(); } }
public void drawMetaDataPhysical(MetaDataPhysical mdp) { //Vẽ MetaDataPhysical lên this Panel foreach (Table t in mdp.Tables) { TableShape ts = new TableShape(t); ts.Location = new Point(t.x, t.y); this.Controls.Add(ts); } foreach (ForeignKey fk in mdp.ForeignKeys) { TableShape shapePrimary = searchShapeInPannel(fk.ParentTable); TableShape shapeReference = searchShapeInPannel(fk.ChildTable); FKShape fkShape = new FKShape(); fkShape.fkName = fk.Name; fkShape.tableReference = shapeReference; fkShape.childColumn = fk.ChildColumn; fkShape.parentColumn = fk.ParentColumn; shapePrimary.listFK.Add(fkShape); } this.Invalidate(); }
//My Method public MetaDataPhysical getMetaDataPhysical() { //Convert tất cả shape qua MetaDataPhysical MetaDataPhysical mdp = new MetaDataPhysical(); //Duyệt tất cả controls trên Panel foreach (Control ctr in this.Controls) { TableShape tShape = (TableShape)ctr; mdp.Tables.Add(tShape.table); foreach (FKShape fkShape in tShape.listFK) { ForeignKey fk = new ForeignKey(); fk.Name = fkShape.fkName; fk.ParentTable = tShape.table.name; fk.ParentColumn = fkShape.parentColumn; fk.ChildTable = fkShape.tableReference.table.name; fk.ChildColumn = fkShape.childColumn; mdp.ForeignKeys.Add(fk); } } return(mdp); }
void shape_MouseDown(object sender, MouseEventArgs e) { TableShape shape = (TableShape)sender; if (e.Button == MouseButtons.Left)//Đang Click chuột trái { mousePoint.X = e.X; mousePoint.Y = e.Y; if ((e.X + 5) >= shape.Width || (e.Y + 5) >= shape.Height) { isResizing = true; } else { isMoving = true; } } //Khi đang ở vùng của Shape và click chuột thì việc Rename hoàn tất if (renamedShape && txtRename != null && txtRename.Text != "" && !(txtRename.Text.IndexOf(' ', 0, 1) == 0)) { endRename(); } }
//Event trên Shape void shape_MouseDoubleClick(object sender, MouseEventArgs e) { TableShape shape = (TableShape)sender; int indexColumn = 0; //Bật trạng thái rename lên renamedShape = true; //Click vào Table Name if (e.Y > 0 && e.Y < ShapeSetting.heightPieceShape) { renamedTableName = true; txtRename = new TextBox(); txtRename.Location = new Point(0, (indexColumn * ShapeSetting.heightPieceShape)); txtRename.Width = shape.Width; txtRename.Text = shape.table.name; shape.Controls.Add(txtRename); tShapeRenamed = shape; txtRename.Focus(); txtRename.SelectAll(); txtRename.KeyDown += new KeyEventHandler(txtRename_KeyDown); } //Duyệt tất cả các Columns for (int i = 1; i <= shape.table.columns.Count; i++) { if (e.Y > (i * ShapeSetting.heightPieceShape) && e.Y < ((i + 1) * ShapeSetting.heightPieceShape)) { indexColumn = i; break; } } if (indexColumn > 0) { //Tạo TextBox Rename txtRename = new TextBox(); txtRename.Location = new Point(0, (indexColumn * ShapeSetting.heightPieceShape)); txtRename.Width = shape.Width; txtRename.Text = shape.table.columns[indexColumn - 1].Name; shape.Controls.Add(txtRename); txtRename.Focus(); txtRename.SelectAll(); colRenamed = shape.table.columns[indexColumn - 1]; //Lấy Column đang được Rename //Tạo Combox DataType cbxDataType = new DataDescription(); cbxDataType.Location = new Point(shape.Location.X + shape.Width, shape.Location.Y + (indexColumn * ShapeSetting.heightPieceShape)); this.Controls.Add(cbxDataType); this.Controls.SetChildIndex(cbxDataType, 0); cbxDataType.cboDataType.SelectedItem = shape.table.columns[indexColumn - 1].DataType; cbxDataType.txtLength.Text = shape.table.columns[indexColumn - 1].Length.ToString(); cbxDataType.chkNull.Checked = shape.table.columns[indexColumn - 1].AlowNull; if (shape.table.columns[indexColumn - 1].PrimaryKey) { cbxDataType.chkNull.Enabled = false; cbxDataType.chkNull.Checked = false; } cbxDataType.txtDescription.Text = shape.table.columns[indexColumn - 1].Description; //Sinh Event KeyDown trên textBox txtRename.KeyDown += new KeyEventHandler(txtRename_KeyDown); cbxDataType.btnOK.Click += new EventHandler(btnOK_Click); } }
//Event trên Shape void shape_MouseDoubleClick(object sender, MouseEventArgs e) { TableShape shape = (TableShape)sender; int indexColumn =0; //Bật trạng thái rename lên renamedShape = true; //Click vào Table Name if (e.Y > 0 && e.Y < ShapeSetting.heightPieceShape) { renamedTableName = true; txtRename = new TextBox(); txtRename.Location = new Point(0, (indexColumn * ShapeSetting.heightPieceShape)); txtRename.Width = shape.Width; txtRename.Text = shape.table.name; shape.Controls.Add(txtRename); tShapeRenamed = shape; txtRename.Focus(); txtRename.SelectAll(); txtRename.KeyDown += new KeyEventHandler(txtRename_KeyDown); } //Duyệt tất cả các Columns for (int i = 1; i <= shape.table.columns.Count; i++) { if (e.Y > (i * ShapeSetting.heightPieceShape) && e.Y < ((i + 1) * ShapeSetting.heightPieceShape)) { indexColumn = i; break; } } if (indexColumn > 0) { //Tạo TextBox Rename txtRename = new TextBox(); txtRename.Location= new Point(0, (indexColumn * ShapeSetting.heightPieceShape)); txtRename.Width = shape.Width; txtRename.Text = shape.table.columns[indexColumn - 1].Name; shape.Controls.Add(txtRename); txtRename.Focus(); txtRename.SelectAll(); colRenamed = shape.table.columns[indexColumn - 1]; //Lấy Column đang được Rename //Tạo Combox DataType cbxDataType = new DataDescription(); cbxDataType.Location = new Point(shape.Location.X + shape.Width, shape.Location.Y+(indexColumn*ShapeSetting.heightPieceShape)); this.Controls.Add(cbxDataType); this.Controls.SetChildIndex(cbxDataType, 0); cbxDataType.cboDataType.SelectedItem = shape.table.columns[indexColumn - 1].DataType; cbxDataType.txtLength.Text = shape.table.columns[indexColumn - 1].Length.ToString(); cbxDataType.chkNull.Checked = shape.table.columns[indexColumn - 1].AlowNull; if (shape.table.columns[indexColumn - 1].PrimaryKey) { cbxDataType.chkNull.Enabled = false; cbxDataType.chkNull.Checked = false; } cbxDataType.txtDescription.Text = shape.table.columns[indexColumn - 1].Description; //Sinh Event KeyDown trên textBox txtRename.KeyDown += new KeyEventHandler(txtRename_KeyDown); cbxDataType.btnOK.Click +=new EventHandler(btnOK_Click); } }
private TableShape searchShapeInPannel(string tableName) { TableShape shape = new TableShape(); foreach (Control ctr in this.Controls) { shape = (TableShape)ctr; if (shape.table.name == tableName) { break; } } return shape; }
public FKShape() { tableReference = new TableShape(); fkName = ""; }