public Columna(string titulo, int anchoColumna, int altoColumna) { SetStyle(ControlStyles.SupportsTransparentBackColor, true); InitializeComponent(); //funcion que se llama al cerrar la ventana this.FormClosing += new FormClosingEventHandler(Controlador.volveraBloque); //buscar el id correspondiente a ese titulo int idColumna = BDColumnas.buscarIdColumna(titulo); //rellena con el id de la columna y su nombre sus respectivos label columna_id.Text = idColumna.ToString(); nombre_columna.Text = titulo; //asigna el ancho y alto del contenedor contenedorColumna.Width = anchoColumna + 10; contenedorColumna.Height = altoColumna + 10; contenedorColumna.Left = 53; //Para evitar que el usuario de la aplicacion cambie el tamaño de la pestaña this.FormBorderStyle = FormBorderStyle.None; //asignar tamaño maximo para el contenedor contenedorColumna.MaximumSize = new Size(1270, 580); contenedorColumna.MinimumSize = new Size(200, 100); }
//funcion para poder cambiar el ancho de la columna public void cambiarAncho(PictureBox bordeDerecho, Panel columna) { bool aumentarAncho = false; //funcion para cuando clickas sobre el borde derecho para modificar el ancho de la columna bordeDerecho.MouseDown += delegate(object sender, MouseEventArgs e) { aumentarAncho = true; }; //funcion para cuando se deja de clickar sobre el el borde derecho para modificar el ancho de la columna bordeDerecho.MouseUp += delegate(object sender, MouseEventArgs e) { aumentarAncho = false; BDColumnas.actualizarAncho((columna.Width - 10), Convert.ToInt16(columna_id.Text)); }; //funcion que al estar clickando permite modificar el ancho de la columna bordeDerecho.MouseMove += delegate(object sender, MouseEventArgs e) { bordeDerecho.BringToFront(); if (aumentarAncho) { columna.Width = bordeDerecho.Left + e.X; columna.AutoSize = false; } }; }
//funcion para poder cambiar la altura de la columna public void cambiarAlto(PictureBox bordeInferior, Panel columna) { bool aumentarAlto = false; //funcion para cuando clickas sobre el borde inferior para modificar la altura de la columna bordeInferior.MouseDown += delegate(object sender, MouseEventArgs e) { aumentarAlto = true; }; //funcion para cuando se deja de clickar sobre el el borde inferior para modificar la altura de la columna bordeInferior.MouseUp += delegate(object sender, MouseEventArgs e) { aumentarAlto = false; BDColumnas.actualizarAlto((columna.Height - 10), Convert.ToInt16(columna_id.Text)); }; //funcion que al estar clickando permite modificar la altura de la columna bordeInferior.MouseMove += delegate(object sender, MouseEventArgs e) { bordeInferior.BringToFront(); if (aumentarAlto) { columna.Height = bordeInferior.Top + e.Y; columna.AutoSize = false; } }; }
private void borrarColumna_Click(object sender, EventArgs e) { //ventana para confirmar que se quiere borrar la columna DialogResult confirmar = MessageBox.Show("Ten cuidado, al borrar esta columna borraras todos los elementos que contiene tambien, estas seguro de querer borrar esta columna", "Borrar", MessageBoxButtons.YesNo, MessageBoxIcon.Information); //si la respuesta a confirmar es que si se borrara la columna de base de datos if (confirmar == DialogResult.Yes) { BDColumnas.borrarColumna(columna_id.Text); this.Close(); } }
//tercera parte de la funcion para que una columna se pueda mover public void controlMovible(Control control, Control container, Direction direction) { bool Dragging = false; Point DragStart = Point.Empty; //funcion para cuando clickas sobre la columna para modificar la posicion del elemento control.MouseDown += delegate(object sender, MouseEventArgs e) { Dragging = true; DragStart = new Point(e.X, e.Y); control.Capture = true; }; //funcion para cuando se deja de clickar sobre la columna para modificar la posicion del elemento control.MouseUp += delegate(object sender, MouseEventArgs e) { Dragging = false; control.Capture = false; BDColumnas.actualizarPosicion(control.Left, control.Top, control.Controls[0].Text.ToString()); }; //funcion que al estar clickando permite modificar la posicion de la columna control.MouseMove += delegate(object sender, MouseEventArgs e) { //hacer que la columna que se quiere mover se situe sobre el resto control.BringToFront(); //metodo para que el elemento no pueda sobrepasar el ancho del contenedor de la columna container = (Control)sender; Rectangle panelcontenedor = container.Parent.ClientRectangle; if (Dragging) { if (direction != Direction.Vertical) { control.Left = Math.Min(Math.Max(0, e.X + control.Left - DragStart.X), panelcontenedor.Right - container.Width); } if (direction != Direction.Horizontal) { control.Top = Math.Max(0, e.Y + control.Top - DragStart.Y); } } }; }
private void crearColumna() { //se crea la columna y el elemento que le permite cambiar de tamaño, aparte de funciones necesarias para el correcto funcionamiento Panel panel1 = new Panel(); //caja de texto donde se guarda el nombre de la columna Label nombre = new Label(); nombre.Text = nombre_columna.Text; nombre.AutoSize = true; nombre.Font = new Font("Arial", 22, FontStyle.Bold); nombre.Location = new Point(30, 30); nombre.Visible = false; panel1.Controls.Add(nombre); //Propiedades que tendra la columna al ser creada panel1.BackColor = Color.Transparent; panel1.BorderStyle = BorderStyle.FixedSingle; panel1.Top = contenedor.Height; panel1.Name = "columna" + contador; panel1.Size = new Size(200, 160); panel1.AutoSize = true; panel1.MaximumSize = new Size(contenedor.Width, 1500); panel1.MinimumSize = new Size(200, 160); //crear objeto de la clase columna ClaseColumna ocolumna = new ClaseColumna(nombre.Text, panel1.Width, Convert.ToInt16(bloque_id.Text), 160, 0, panel1.Top); this.Controls.Add(panel1); contenedor.Controls.Add(panel1); contador++; BDColumnas.insertarColumna(ocolumna); }
public void pintarBloques() { //limpiar la lista de columnas y las columnas que contiene el bloque para evitar repetidos listaColumnas.Clear(); contenedor.Controls.Clear(); //se rellena la lista de columnas desde base de datos para posteriormente recorrerla listaColumnas = BDColumnas.buscarColumnas(bloque_id.Text); if (listaColumnas != null) { foreach (ClaseColumna ocolumna in listaColumnas) { //se crea la columna, aparte de funciones necesarias para el correcto funcionamiento Panel panel1 = new Panel(); //Propiedades que tendra la columna al ser creada panel1.BorderStyle = BorderStyle.FixedSingle; panel1.Name = "columna" + contador; panel1.Size = new Size(ocolumna.ancho, ocolumna.alto); if (ocolumna.ancho + ocolumna.espacio_izquierda > 1260) { int espacioNuevo = 1260 - ocolumna.ancho; panel1.Left = espacioNuevo; BDColumnas.actualizarPosicion(espacioNuevo, ocolumna.espacio_arriba, ocolumna.titulo); } else { panel1.Left = ocolumna.espacio_izquierda; } panel1.Top = ocolumna.espacio_arriba; panel1.MaximumSize = new Size(1260, 570); panel1.MinimumSize = new Size(200, 100); panel1.BackColor = Color.Transparent; //caja de texto donde se guarda el nombre de la columna Label nombre = new Label(); nombre.Text = ocolumna.titulo; nombre.AutoSize = true; nombre.Font = new Font("Arial", 22, FontStyle.Bold); nombre.Location = new Point(30, 30); nombre.Visible = false; panel1.Controls.Add(nombre); this.Controls.Add(panel1); contenedor.Controls.Add(panel1); contador++; //rellena la lista de elementos desde base de datos para posteriormente recorrela Columna.listaElementos = BDElementos.buscarElementos(ocolumna.id.ToString()); if (Columna.listaElementos != null) { foreach (ClaseElemento oelemento in Columna.listaElementos) { string tipo = oelemento.tipo; switch (tipo) { case "img": PictureBox imagen = new PictureBox(); imagen.Image = Image.FromFile(@"..\..\ImagenesBD\\" + oelemento.contenido); Bitmap img = new Bitmap(Image.FromFile(@"..\..\ImagenesBD\\" + oelemento.contenido)); var imageHeight = img.Height; var imageWidth = img.Width; //propiedades de la imagen imagen.Top = oelemento.espacio_arriba; imagen.Left = oelemento.espacio_izquierda; imagen.Name = oelemento.id.ToString(); imagen.Size = new Size(imageWidth, imageHeight); imagen.SizeMode = PictureBoxSizeMode.StretchImage; imagen.Width = oelemento.ancho; imagen.Height = oelemento.alto; imagen.Enabled = false; panel1.Controls.Add(imagen); break; case "video": PictureBox video = new PictureBox(); video.Image = Image.FromFile(@"..\..\Imagenes\play.png"); //propiedades del video video.Top = oelemento.espacio_arriba; video.Left = oelemento.espacio_izquierda; video.Name = oelemento.id.ToString(); video.BorderStyle = BorderStyle.FixedSingle; video.SizeMode = PictureBoxSizeMode.CenterImage; video.Width = oelemento.ancho; video.Height = oelemento.alto; video.Enabled = false; panel1.Controls.Add(video); break; case "p": Label parrafo = new Label(); parrafo.Text = oelemento.contenido; //propiedades del parrafo parrafo.Top = oelemento.espacio_arriba; parrafo.Left = oelemento.espacio_izquierda; parrafo.Name = oelemento.id.ToString(); parrafo.Font = new Font("Arial", 9); parrafo.Width = oelemento.ancho; parrafo.Height = oelemento.alto; parrafo.Enabled = false; panel1.Controls.Add(parrafo); break; case "title": Label titulo = new Label(); titulo.Text = oelemento.contenido; //propiedades del titulo titulo.Top = oelemento.espacio_arriba; titulo.Left = oelemento.espacio_izquierda; titulo.Name = oelemento.id.ToString(); titulo.Font = new Font("Arial", 16); titulo.Width = oelemento.ancho; titulo.Height = oelemento.alto; titulo.Enabled = false; panel1.Controls.Add(titulo); break; } } Columna.listaElementos.Clear(); } else { Columna.listaElementos = new ArrayList(); } panel1.MinimumSize = new Size(200, panel1.Height); panel1.BringToFront(); //añade un evento cuando se hace click sobre una columna panel1.DoubleClick += delegate(object send, EventArgs ea) { Controlador.mostrarColumna(send, ea, ocolumna.titulo, panel1.Width, panel1.Height); Hide(); }; panel1.MouseEnter += delegate(object send, EventArgs ea) { panel1.Cursor = Cursors.SizeAll; }; panel1.MouseLeave += delegate(object send, EventArgs ea) { panel1.Cursor = Cursors.Default; }; controlMovible(panel1); } listaColumnas.Clear(); } else { listaColumnas = new ArrayList(); } }