viernes, 29 de mayo de 2009

Status Strip

También conocida como Status Bar o barra de estado, es la famosa barra que aparece en la parte inferior de todas la ventanas de Windows, que normalmente dicen Done o Terminado como esta ventana de Internet en la parte de abajo debería de decir eso, y algunas cosas mas, bueno, esa es la idea.

Para comenzar insertamos el control, automáticamente además de aparecer en la parte inferior del formulario, también aparece fuera de él, como los controles que no tienen interfase.

Sobre el control en el formulario, click e inmediatamente aparece un icono del cual se despliegan opciones, estas se manejan como un arreglo (un Collection, que por cierto, tiene esa propiedad para que desde diseño se manipulen los componentes) y se accesan a ellas a través de los indices.


Como observamos en la imagen, tiene una lista de diferentes elementos a elegir, hablemos de ellos rápidamente:

StatusLabel
Es una etiqueta, como la mencionada anteriormente de Terminado.

ProgressBar:
También llamada por sus amigos, barra de progreso, se utiliza para indicar el progreso de un proceso, es importante recordar las tres propiedades necesarias para su uso que son Max, Min y Value.

DropDownButton:
Es una interesante opción, ya que crea un menú desplegable donde como un típico menú pullDown (POPUP como decía mi profesor Carlos Mendoza), podemos insertar sub opciones y opciones dentro de estas, asi mismo, podemos cambiar el icono que despliega en la barra de estado (como en la foto de abajo le cambié el icono por una hoja en blanco) al darle click , se toma como un objeto independiente y se accesa a todas sus propiedades.

En este caso, tenemos un objeto con 3 elementos o Items, el primero es un Label, el segundo es un DropDownButton y el ultimo es un progressBar (Mas adelante ahondaré individualmente sobre este control). Para mandarle un texto al primero, lo hacemos con el siguiente código:
statusBar.Items[0].Text = "Gabrielita";

Recuerden que si no es un objeto tipo Label esto no funcionará porque no tiene esta propiedad y por ultimo para programar las opciones de menú solo doble click sobre ellas y para cambiar de Dock (o posición de anclaje en el formulario), solo buscan esta propiedad y selecciona una de las posibles opciones (Button, left, Right o Top).

Cuando tenemos formulario con varios TextBox, al caer sobre este (obtener el foco, evento Enter), siempre es bueno que mande un mensaje al Status Bar, como qué tiene que ingresa en el control.

Por ultimo, si necesitamos programar el progress Bar de la barra de estado, debemos llamarlo directamente, no como elemento del indice, en este caso seria:
toolStripProgressBar1.Value+=1;
De esta forma se incrementará de forma unitaria, esto lo puedes hace también en el evento Enter de los TextBox para que avance por cada objeto que completos, claro es recomendable evaluar que no pase del Maximo, y establecerle en Maximo un valor igual al de TextBox que tengamos en el formulario.

ColorDialog

Este control se utiliza para darle color a controles determinados, ya sea el formulario o un objeto que soporte este formato (creo que todos... ejejej).

Lo primero, insertamos este control ColorDialog en el formulario, como no tiene interface, siempre aparecerá fuera del formulario en la parte de abajo.

Luego insertamos un botón y en evento clic de este programamos:
///Si descomentamos esto:
///colorDialog1.AllowFullOpen = false;
/// No va a poder seleccionar colores personalizados.

///Esta linea activa la ventana del color
colorDialog1.ShowDialog();
/// y con esta le pasamos el color seleccionado al Background del formulario
this.BackColor=colorDialog1.Color;

y listo... no tiene mayor ciencia

jueves, 28 de mayo de 2009

OpenFileDialog

El OpenFileDialog es un control utilizado para crear una interfase de comunicación entre la aplicación y archivos externos, como ser imágenes o texto.

Este control, al momento de insertarlo se dibuja en la parte externa inferior del formulario (fuera de este), porque no tiene interface gráfica (otros controles también tienen este comportamiento).

Una vez, insertado realizamos las siguientes actividades:

Modificamos las propiedades del control

Name: openfiledlg1

insertamos un PictureBox y un Button, deberian de llamarse pictureBox1 y button1, en el evento click de este ultimo programamos lo siguiente:

string garrobito;
//Definimos los filtros de archivos a permitir, en este caso imagenes
openfiledlg1.Filter = "Bitmap files (*.bmp)|*.bmp|Gif files (*.gif)|*.gif|JGP files (*.jpg)|*.jpg|All (*.*)|*.* |PNG (*.patito)|*.png ";
///Establece que filtro se mostrará por deceto en este caso, 3=jpg
openfiledlg1.FilterIndex = 3;
///Esto aparece en el Nombre del archivo a seleccionar, se puede quitar no es fundamental
openfiledlg1.FileName="Seleccione una imagen";

//El titulo de la Ventana....
openfiledlg1.Title = "Bachillerato en Computación";

//El directorio que por deceto habrirá, para cada contrapleca del Path colocar \\ C:\\Fotitos\\Wizard y así sucesivamente
openfiledlg1.InitialDirectory = "c:\\";

/// Evalúa que si al aparecer el cuadro de dialogo la persona presionó Ok
if (openfiledlg1.ShowDialog() == DialogResult.OK)
{
/// Si esto se cumple, capturamos la propiedad File Name y la guardamos en la variable Garrobito
garrobito = openfiledlg1.FileName;
//Por ultimo se la asignamos al PictureBox
pictureBox1.Image = Image.FromFile(@garrobito);

}

De esta forma al abrir la imagen, si seleccionamos un archivo, este se hirá como referencia al objeto pictureBox1.

LinkLabel

Como se imaginarán, el objeto LinkLabel se utiliza para crear un Link en un formulario desde el cual podremos acceder a una pagina web, claro está que invocará al navegador para verla.

A continuación describo los pasos a seguir:

1. Insertamos el objeto y modificamos las siguientes propiedades:
Name: libLink
Text: www.patito.com (Claro que puede ser cualquier dirección)

Luego damos doble click al formulario y en la parte de los using (al inicio del código) escribimos:
using System.Diagnostics;

A continuación en el evento load del formulario:

libLink.Links.Remove(libLink.Links[0]);
libLink.Links.Add(0, libLink.Text.Length, "http://www.google.hn");

Ahora bien, regresando al modo de diseño del formulario damos doble clik al objeto LinkLabel y automaticamente nos llevara al evento LinkClicked y ahí programamos lo siguiente:

ProcessStartInfo sInfo = new ProcessStartInfo(e.Link.LinkData.ToString());
Process.Start(sInfo);

Una vez terminado esto, ejecutamos y damos click en el objeto, de inmediato nos debe de abrir una página web con la dirección google.hn, aunque en el Text del contrl no sea el mismo, no hay problemas.

Espero les sea de utilidad...

Hasta pronto

sábado, 16 de mayo de 2009

Drag And Drop en PictureBox

Este efecto es muy interesante y propio de la programación orientada a objetos, en este evento (a diferencia de los otros que solo desencadena un procedimiento, como el Click, load, Mouse Move etc) se desencadenan tres procedimientos:

Mouse Move
DragEnter
DragDrop

En ese orden.

Imaginemos que tenemos dos pictureBox de Nombre Foto1 y otro de nombre Foto2 lo primero que debemos haces es activarles el Drag And Drop, en el evento Load del formulario escribimos:

Foto1.AllowDrop=true;
Foto2.AllowDrop=true;

Cuando le den clic no va a aparecer, así que no se preocupen al respecto solo escríbanlo.

Ahí mismo declaramos una variable de tipo object llamada origenes que sea publica

object origenes;

Esta variable se utiliza para mantener la referencia al objeto de donde se está arrastrando la imagen de no ser así, solo podríamos hacer Copiar/Pegar y nó Drag And Drop, es recomendable declarar esta variable antes del constructor.

Bueno, una vez realizado esto, van a hacer copy/Paste a los procedimientos que llamaran desde los eventos del drag and drop, anteriormente mencionados:

Esto es lo que van a a asociar al evento Mouse Down de los PictureBox Foto1 y Foto2, claro solo el nombre que seria PictureBox_MouseDown

private void PictureBox_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
///Objeto de origen de la imagen
PictureBox pic = (PictureBox)sender;
origenes = sender;


if (e.Button == MouseButtons.Left)
{
if (pic.Image != null)
{
pic.DoDragDrop(pic.Image, DragDropEffects.Move);
}
}
}

-------------------------------------------------------------------------------------

Esto en el Drag Enter de los dos Picture Box llamas PictureBox_DragEnter

private void PictureBox_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{

if (e.Data.GetDataPresent(DataFormats.Bitmap))
{
e.Effect = DragDropEffects.Move;
}
else
{
e.Effect = DragDropEffects.None;
}
}

-------------------------------------------------------------------------------------
Y por ultimo en el DragDrop asociamos esto:

private void PictureBox_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
PictureBox pic = (PictureBox)sender;
PictureBox org = (PictureBox)origenes;

if (pic.Name != org.Name)
{

pic.Image = (Bitmap)e.Data.GetData(DataFormats.Bitmap);
org.Image = null;

}


}

Una importante observación, esto se copia y pega dentro del formulario, no dentro de ningún evento y luego a los dos objetos se les asocia en cada evento los nombres de los procedimientos Ejemplo

En los eventos (Que están en el símbolo de rayito en la ventana de propiedadas que aparece a la derecha de la ventana) buscamos el evento MouseMove y sin darle doble click en el espacio escribimos PictureBox_MouseDown y damos Enter, igual con los otros, una vez terminado, ejetutamos el formulario y listo.

jueves, 14 de mayo de 2009

Planificación del Curso de Programación

Buen día chicos

Les adjunto la planificación parcial ahí encontraran los temas, tareas y especificaciones de la misma

Saludos.

http://lix.in/-4cb2d4

viernes, 8 de mayo de 2009

Arreglos Bidimensionales

Lo Arreglos, como anteriormente mencioné, (en clase o en el foro jejeje) son colecciones de objetos del mismo tipo, ligados unos con otros en posiciones continuas accedidos desde un indice que en lenguajes de base C comienza en cero (0), y tienen el mismo nombre, Patido [3], en este caso estariamos accesando la posición 4 del arreglo, porque comienzan en en cero como acabamos de mencionar.

Ahora bien, los arreglos bidimensionales, son la misma historia, pero tienen fila y columna y al declararolo lo hacemos de la siguiente manera:

String [,] datos = new String[8, 8];

Con esta linea declaro un arreglo llamado datos, de tipo string con 8 filas y 8 columnas como una cuadricula de una hoja de Calculo (si, asi como la de Open office, o Office 2007).

y solo es cuestión de invocar la posición que deseamos ver o asignarle valor y listo
datos[0,7] = "TRB";
En esta linea, le decimos que en la fila Cero y Columna 7 Agrege el valor de TRB, independientemente de lo que exista eliminará el conetenido y le asignará eso.

MessageBox.Show(datos[1,0].ToString());

En este caso mostrará lo que existe en la posición de la fila Uno y columna Cero.

Es importante recordar que se puede haer arreglos de cualquier tipo de dato y que al asignarle valores deven ser del mismo tipo.

Existen Algoritmos para Ordenar y recorrer Arreglos Bidimensionales, les recomiendo los googleen..

Para terminar este articulo les dejo un pequeño Algoritmo para inicializar todos las posiciones de un arreglo bidimensional

for (int x = 0; x < 8; x++)
for (int y = 0; y < 8; y++)
datos[x,y] = "-";

En este caso, para la longitud que declaramos arriba (8x8) pero funciona para cualquier longitud.