arroba más más - Programación e Internet  arroba más más - Programación e Internet
Estás en: Inicio > Cursos > Entornos de desarrollo > El entorno Delphi > Curso básico de Delphi > - El control Edit
 
CAPÍTULOS

SECCIONES

SITIOS RECOMENDADOS

OTROS SITIOS DE LA AUTORA

En línea desde el 7 de noviembre de 2000

3.II. El control Edit

Uno de los controles que nos permiten la entrada de datos por teclado es el que aparece en el botón El control Edit de Delphi - Paleta estándar que recibe el nombre de Edit.

Propiedades Generales

El nombre del control lo fijaremos en la propiedad Name, al igual que en cualquier otro componente. La posición y dimensiones de un control Edit vienen determinadas por las propiedades Left,Top,Width y Heigth, ya conocidas.

Las propiedades Visible y Enabled controlan el estado del control, que puede ser visible o no y estar activado o no. Para facilitar una etiqueta de ayuda usaremos la propiedad Hint, junto con ShowHint si es necesario. El color de fondo del campo de entrada será fijado mediante la propiedad Color, mientras que los atributos del texto los estableceremos mediante la propiedad Font. Es posible fijar una determinada figura para el cursor del ratón al pasar sobre el campo de edición, asignando el valor apropiado a la propiedad Cursor. Al igual que el resto de componentes insertados en una ficha, un control Edit es un elemento de la matriz Components del form, cuyo índice podemos obteber mediante la propiedad ComponentIndex.

En el control Edit, la propiedad AutoSize, que puede tomar los valores True o False, controla el ajuste automático del control a las dimensiones del tipo de letra que se vaya a utilizar. Si damos a esta propiedad el valor False y modificamos posteriormente el tipo o tamaño de letra, podremos ver cómo el control queda parcialmente vacío o bien no es suficiente grande como para mostrar el contenido.

A diferencia de lo que ocurre con el control Label, en un campo de edición la propiedad Align no está disponible en tiempo de diseño, por lo que si queremos ajustar el control en una determinada posición de la ficha tendremos que hacerlo en tiempo de ejecución, asignando el valor correspondiente a esta propiedad.

Contenido del Campo Edición

El control Edit no tiene una propiedad Caption, ya que no dispone de un título estático. El texto que aparece en ese control se puede editar en tiempo de ejecución y se almacena en la propiedad Text. Podemos asignar cualquier valor inicial que nos interese a esta propiedad, valor que aparecerán en el campo de edición al ejecutar el programa, siendo posible su modificación. La longitud máxima del texto que es posible introducir en este control la podemos establecer asignando a la propiedad MaxLength el máximo número de caracteres que queremos admitir. Inicialmente esta propiedad tiene el valor cero, indicando que en principio no existe un límite. En cuanto el valor sea distinto de cero, el máximo número de caracteres será ese valor introducido.

Para editar el contenido de un control Edit durante la ejecución, utilizaremos las teclas habituales en cualquier aplicación Windows (podemos movernos con los cursores, podemos usar la tecla de borrar, etc).

Control de la Entrada

Además de controlar la longitud máxima del texto mediante MaxLength, también podemos convertir automáticamente todas las letras introducidas en mayúsculas a minúsculas, o en minúsculas a mayúsculas, según el valor que asignemos a la propiedad CharCase. Estos valores pueden ser:

ConstanteConversión realizada
ecNormalNo se realiza conversión alguna
ecLowerCaseTodas las mayúsculas a minúsculas
ecUpperCaseTodas las minúsculas a mayúsculas

Mediante la propiedad Modified podemos saber si el contenido del campo de edición ha sido modificado o no. Cuando el control se crea inicialmente, esta propiedad tiene el valor False. Esta propiedad, en cualquier momento en que el usuario introduzca cualquier carácter o edite el valor inicial del campo tomará el valor True. Podemos dar el valor False a esta propiedad en cualquier momento que nos interese, de tal forma que en una posterior comprobación sepamos si se ha modificado o no.

Inicialmente la finalidad de un control Edit es permitir la entrada o edición de un texto, pero puede darse el caso de que nos interese utilizar este tipo de control sólo para mostrar una información, permitiendo desplazarse por ella pero no permitiendo modificarla. Para conseguir esto lo único que tenemos que hacer es dar el valor True a la propiedad ReadOnly, que inicialmente tiene el valor False.

En caso de que utilicemos un campo de edición para pedir algún dato confidencial, como pueda ser un número secreto o palabra de acceso, podemos hacer que la información introducida por teclado no se refleje en pantalla, sustituyendo cada uno de los carácteres por un cierto carácter, que deberemos asignar a la propiedad PasswordChar.

Seleción de Texto

Podemos conocer la posición a partir de la cual se ha marcado un texto consultando la propiedad SelStart, que contendrá la posición del primer carácter que se haya marcado, teniendo en cuenta que el primer carácter por la izquierda es el 0, el siguiente el 1, etc. También podemos conocer la longitud del texto marcado, o lo que es lo mismo, el número de carácteres existentes en la selección, mediante la propiedad SelLength. Una tercera propiedad, SelText, nos servirá tanto para obtener el texto que se encuentra seleccionado en el control, como para cambiarlo por otro simplemente asignándolo a esta propiedad.

Cuando en un control se ha marcado una porción de texto, esta selección permanece hasta que realiza un movimiento del cursor, permaneciendo aún cuando nos desplacemos de este control a otro que exista enl form. Cuando esto ocurre, el texto que teníamos marcado puede permanecer así o bien mostrarse normal, volviendo a visualizarse marcado al volver a entrar en el campo. Este comportamiento es controlado mediante la propiedad HideSelection, que puede tomar el valor True, ocultando la selección cuando se sale del control, o False, dejándola visible. Por defecto esta propiedad tiene el valor True.

En principio, cada vez que se pasa el control a un campo de edición, haciéndolo activo, todo el contenido de éste se selecciona automáticamente, independientemente del último texto que se hubiese marcado. Esto es debido a que la propiedad AutoSelect tiene por defecto el valor True, indicando al control que cada vez que se active seleccione todo el contenido. Si damos a esta propiedad el valor False, al volver a un campo en el que anteriormente se había marcado una porción de texto, podremos ver que sigue activa la misma selección.

Activación de los Controles

Por regla general, para pasar de un control a otro en un form utilizaremos la tecla <Tabulador>. También puede usarse la combinación <Mayúsculas>+&ltTabulador> para ir en sentido inverso. Obviamente se puede activar un cierto control situando el puntero del ratón sobre él y pulsando el botón izquierdo. En caso de que nos interese que un cierto control se active mediante la pulsación de la tecla <Tabulador>, formando parte del recorrido de controles del form, tan sólo hemos de darle el valor False a la propiedad TabStop, que por defecto es True. Al hacer esto no podremos acceder a ese control usando el <Tabulador>, pero siempre podemos activarlo mediante el ratón.

Delphi nos permite establecer el orden de acceso. Seleccionamos la opción Tab Order del menú emergente que aparecerá al pulsar el botón derecho del ratón sobre el form, o bien elegimos esa misma opción del menú Edit en la ventana principal. En ambos casos veremos aparecer una ventana conteniendo el nombre y tipo de cada uno de los controles que pueden ser activados.

En esta ventana podemos establecer el orden de acceso de una forma visual. Si queremos modificar la posición de un cierto control en la lista, lo único que hemos de hacer es "pincharlo" con el cursor del ratón y "arrastrarlo" hasta su nueva posición.

Otras Propiedades de Edit

Al insertar un campo de edición en un form, por defecto aparece con un cierto aspecto tridimensional y un recuadro alrededor. Estos elementos son controlados mediante las propiedades Ctl3D y BorderStyle, respectivamente. La primera de ellas puede tomar los valores True o False, dependiendo de lo cual el control aparecerá o no con aspecto tridimensional. La propiedad BorderStyle puede tomar dos valores distintos, bsNone o bsSingle. El primero de ellos hará aparecer el control sin borde alrededor, mientras que el segundo, que es el valor tomado por defecto, establece un borde simple delimitando la extensión del control.

Además de la propiedad ShowHint, que ya conocemos, el control Edit cuenta también con las propiedades ParentColor, ParentCtl3d y ParentFont, cada una de las cuales puede tomar los valores True o False. La finalidad de estas opciones es permitir que el control tome parte de sus atributos, como el color de fondo, aspecto tridimensional y tipo de letra, de las propiedades del componente en que se haya incluido, al que se le llama padre.

Métodos del Control Edit

Hemos visto anteriormente cómo mediante las propiedades SelStart, SelLength y SelText podemos controlar desde el código de nuestro programa la selección de texto. Además de estas propiedades también disponemos de los métodos SelectAll, que selecciona todo el texto existente en el control, y ClearSelection, que elimina el texto seleccionado en ese momento. Si queremos dejar el control vacío, borrando todo el texto que contiene, podemos hacerlo usando el método Clear.

Las operaciones con el portapapeles las llevaremos a cabo mediante los métodos CopyToClipboard, que copiará el texto seleccionado en el portapapeles, CutToClipboard, que además de copiarlo lo borrará del campo en que se encuentra editado, y PasteFromClipboard, que tomará el texto existente en el portapapeles y lo pegará a partir de la posición en la que actualmente se encuentra el cursor, insertándolo.

Eventos del control Edit

Como casi todos los demás controles que pueden residir en un form, un campo de edición recibe eventos generados por el ratón, OnMouseMove, OnMouseDown y OnMouseUp, y por el teclado, OnKeyPress,OnKeyDown y OnKeyUp.

El evento OnEnter se generará en el momento en que el campo de edición se convierta en el control activo del form, mienrtas que OnExit se producirá cuando deje de serlo.

Cada vez que se realice una modificación en el contenido del control, insertando un nuevo carácter o borrando parte del contenido, se producirá un evento OnChange.

Autor: Lola Cárdenas Luque
Última actualización: 24 de junio de 2001
- Etiquetas de texto | - El control Memo
Copyright © 2000 - 2005, Lola Cárdenas Luque - Todos los derechos reservados