Está en la página 1de 15

ImageList

El control ImageList " traducido al espaol " significa lista de imgenes y la funcin principal es la
de almacenar grficos para poder enlazarlos y autoabastecer a otros controles de dichas
imgenes, como por ejemplo las barras de herramientas o ToolBar, el control ListView , el control
ImageCombo, TreeView y algunos otros
Tambin es posible usarlo para almacenar solo imgenes pero que no estn enlazadas a otros
controles, y poder luego recuperarlas mediante la propiedad Picture, por ejemplo para usarlo con
un contol Picture, Image form etc..
Para agregar el control ImageList se debe hacer desde el Men Componentes en la opcin
Microsoft Windows Common Controls 6
Cuando lo agregamos a un formulario, este control solo permanecer visible en tiempo de diseo,
ya que su nica funcin como se dijo es la de agrupar y contener imgenes para poder utilizarla
por separado o para abastecer a otros controles de las mismas, por lo que no requiere que sea
visible en tiempo de ejecucin

Mtodo Add
Este mtodo se utiliza para agregar imgenes en tiempo de ejecucin. Esta imagen puede ser una
grfico cargado por ejemplo en un control Picture, un control Image o una variable por ejemplo de
tipo IpictureDisp, de tipo Picture o StdPicture
Un ejemplo de esto ltimo:
Cargar en un control Picture1 un grfico. Luego vamos a agregar el grfico del Picture1 en el
ImageList, y por ltimo mostraremos esa imagen cargada en un control Image1. Esto no tiene
ningn sentido, pero es para que te des una idea de como pods utilizar este mtodo.
ImageList1.ListImages.Add , "UnNombre", Picture1.Picture
Image1 = ImageList1.ListImages("UnNombre").Picture

El primer parmetro es Index, que en el ejemplo no se coloc ya que es opcional.


El segundo parmetro es Key, es decir la clave para poder referenciar luego a dicha imagen,
tambin es opcional.

El ltimo parmetro es Picture, y debe ser una imagen vlida como se coment antes, y lo que se
le est indicando es que almacene y agregue al ImageList la imagen cargada en el Picture1.
La segunda lnea de cdigo lo que hace es cargar en el control Image1 la imagen anterior que
acabamos de agregar. Para indicarle que imagen queremos cargar, le pasamos al objeto ListImages
la clave anterior como parmetro (tambin podramos pasarle el Index de la imagen) y luego le
indicamos la propiedad Picture.

Mtodo Remove
Para eliminar una imagen cargada en el ImageList se utiliza el mtodo Remove, donde le podemos
pasar la clave o la propiedad Index al objeto ListImages, por ejemplo:
'Le pasamos a Remove la Clave
ImageList1.ListImages.Remove ("UnNombre")
'Le pasamos a Remove el nmero de indice, o sea el Index
ImageList1.ListImages.Remove (7)

Nota: Antes de eliminar una imagen debemos serciorarnos que el Index o la clave sean vlidos y
existan, ya que si no nos dara error en tiempo de ejecucin

Mtodo Clear
Para eliminar toda la lista de imgenes podemos usar el mtodo Clear, este no requiere ningn
parmetro, solo basta con ejecutarlo, por ejemplo:
ImageList1.ListImages.Clear

Otras propiedades y mtodos

ImageHeight : Devuelve o establece el alto de un objeto ListImage.


ImageWidth: Devuelve o establece el ancho de los objetos ListImage de un control
ImageList.
Index: Devuelve o establece el nmero que identifica un control en una matriz de
controles.
MaskColor: Devuelve o establece un valor que indica al color que ser transparente en las
operaciones grficas de ImageList.

Overlay: Crea una tercera imagen compuesta de dos objetos ListImage y devuelve una
referencia al nuevo objeto
Parent: Devuelve el objeto en el que se encuentra este objeto.
Tag: Guarda datos adicionales necesarios para su programa.
UseMaskColor: Devuelve o establece un valor que determina si el control ImageList
utilizar la propiedad MaskColor.

ToolStrip
ToolStrip y sus clases asociadas permiten crear barras de herramientas y otros elementos de la
interfaz de usuario que tengan Microsoft Windows XP, Microsoft Office o Microsoft Internet
Explorer, o bien con un estilo y comportamiento personalizado. Estos elementos admiten el
desbordamiento y la reorganizacin de elementos en tiempo de ejecucin. Los controles ToolStrip
ofrecen una completa experiencia en tiempo de diseo que incluye la edicin y activacin in situ,
el diseo personalizado y de espacio compartido, que es la posibilidad que ofrecen las barras de
herramientas de compartir el espacio vertical y horizontal.
Aunque ToolStrip reemplaza y agrega funcionalidad al control en versiones anteriores, ToolBar se
conserva a efectos de compatibilidad con versiones anteriores y de uso futuro, segn sea el caso.

Qu se puede hacer con el control ToolStrip


Utilice el control ToolStrip para:

Crear fcilmente barras de herramientas comnmente empleadas y personalizadas


compatibles con la interfaz de usuario avanzada y las caractersticas de diseo, como el
acoplamiento, el espacio compartido, los botones con texto e imgenes, botones y
controles desplegables, botones de desbordamiento y reorganizacin en tiempo de
ejecucin de elementos ToolStrip.
Compatibilidad con el comportamiento y aspecto tpico del sistema operativo.
Controlar de forma coherente los eventos para todos los contenedores y los elementos
contenidos, al igual que controla los eventos para otros controles.
Arrastre los elementos de un ToolStrip a otro o dentro de un ToolStrip.
Cree controles desplegables y editores de tipos de la interfaz de usuario con diseos
avanzados en un ToolStripDropDown.

Utilice la clase ToolStripControlHost para utilizar otros controles de un ToolStrip y obtener la


funcionalidad ToolStrip para ellos.
Puede extender la funcionalidad y modificar el aspecto y el comportamiento utilizando
ToolStripRenderer, ToolStripProfessionalRenderer y ToolStripManager junto con las
enumeraciones ToolStripRenderMode y ToolStripManagerRenderMode.

El control ToolStrip es muy configurable y extensible y proporciona muchas propiedades, mtodos


y eventos para personalizar el aspecto y el comportamiento. A continuacin se enumeran algunos
miembros que merece la pena comentar:

Miembros importantes de ToolStrip


Nombre

Descripcin

Dock

Obtiene o establece a qu borde del contenedor primario se acopla ToolStrip.

AllowItemReorder Obtiene o establece un valor que indica si la clase ToolStrip controla la


organizacin de elementos y la operacin de arrastrar y colocar de forma
privada.

LayoutStyle

Obtiene o establece un valor que indica cmo dispone ToolStrip sus


elementos.

Overflow

Obtiene o establece si ToolStripItem se asocia a al ToolStrip, a


ToolStripOverflowButton o puede oscilar entre los dos.

IsDropDown

Obtiene un valor que indica si ToolStripItem muestra otros elementos en una


lista desplegable cuando se hace clic con ToolStripItem.

OverflowButton

Obtiene el ToolStripItem que es el botn de desbordamiento para un


ToolStrip con desbordamiento habilitado.

Renderer

Obtiene o establece un ToolStripRenderer utilizado para personalizar el


aspecto y el comportamiento (apariencia y percepcin) de un ToolStrip.

RenderMode

Obtiene o establece los estilos de dibujo que van a aplicarse al ToolStrip.

RendererChanged Se produce cuando cambia la propiedad Renderer.

La flexibilidad del control ToolStrip se logra a travs del uso de varias clases complementarias. A
continuacin se enumeran algunas de las ms notables:

Clases complementarias importantes de ToolStrip


Nombre

Descripcin

MenuStrip

Reemplaza y agrega la funcionalidad al control MainMenu.

StatusStrip

Reemplaza y agrega la funcionalidad al control StatusBar.

ContextMenuStrip

Reemplaza y agrega la funcionalidad al control ContextMenu.

ToolStripItem

Clase base abstracta que administra eventos y el diseo para


todos los elementos que ToolStrip, ToolStripControlHost o
ToolStripDropDown pueden contener.

ToolStripContainer

Proporciona un contenedor con un panel en cada lado del


formulario en el que los controles se pueden organizar de
distintas maneras.

ToolStripRenderer

Controla la funcionalidad de dibujo para los objetos ToolStrip.

ToolStripProfessionalRenderer Proporciona el aspecto del estilo de Microsoft Office.

ToolStripManager

Controla la representacin y el espacio compartido de ToolStrip


y
la
combinacin
de
los
objetos
MenuStrip,
ToolStripDropDownMenu y ToolStripMenuItem.

ToolStripManagerRenderMode Especifica el estilo de dibujo (personalizado, de Windows XP o


Microsoft Office Professional) aplicado a varios objetos ToolStrip
contenidos en un formulario.

ToolStripRenderMode

Especifica el estilo de dibujo (personalizado, de Windows XP o


Microsoft Office Professional) aplicado a varios objetos ToolStrip
contenidos en un formulario.

ToolStripControlHost

Aloja otros controles que no son especficamente los controles


ToolStrip pero para los que desea la funcionalidad ToolStrip.

ToolStripItemPlacement

Especifica si un ToolStripItem se coloca en el ToolStrip principal,


en el desbordamiento ToolStrip o en ninguno.

StatusStrip
Los controles StatusStrip muestran informacin sobre objetos que se van a visualizar en una
ventana o cuadro de dilogo Form, los componentes del objeto o informacin contextual respecto
a esa operacin del objeto dentro de la aplicacin. Normalmente, un control StatusStrip est
compuesto de objetos ToolStripStatusLabel, que muestran texto, iconos o ambos. El control
StatusStrip
tambin
puede
contener
los
controles:
ToolStripDropDownButton,
ToolStripSplitButton y ToolStripProgressBar.
El control StatusStrip predeterminado no tiene paneles. Para agregar paneles a StatusStrip, utilice
el mtodo ToolStripItemCollection.AddRange.
Hay una amplia compatibilidad para controlar elementos StatusStrip y comandos comunes en
Visual Studio.
Aunque el control StatusStrip reemplaza y ampla al control StatusBar respecto a las versiones
anteriores, StatusBar se conserva a efectos de compatibilidad con versiones anteriores y uso
futuro, si se desea.

Miembros de StatusStrip importantes


Nombre

Descripcin

CanOverflow Obtiene o establece un valor que indica si StatusStrip admite la funcionalidad del
desbordamiento.

Stretch

Obtiene o establece un valor que indica si StatusStrip se expande de extremo a


extremo en ToolStripContainer.

Clases complementarias importantes de StatusStrip


Nombre

Descripcin

ToolStripStatusLabel

Representa un panel de un control StatusStrip.

ToolStripDropDownButton Muestra un ToolStripDropDown asociado del que el usuario puede


seleccionar un elemento nico.

ToolStripSplitButton

Representa un control de dos elementos que es un botn estndar y


un men desplegable.

ToolStripProgressBar

Muestra el estado de realizacin de un proceso.

DateTimePicker
El control DateTimePicker de formularios Windows Forms permite al usuario seleccionar un solo
elemento de una lista de fechas y horas. Cuando se utiliza para representa una fecha, aparece en
dos partes: una lista desplegable con una fecha representada como texto y una cuadrcula, que
aparece al hacer clic en la flecha hacia abajo que se encuentra junto a la lista. La cuadrcula es
similar al control MonthCalendar, que puede utilizarse para seleccionar mltiples fechas.

Propiedades principales
Si desea que DateTimePicker aparezca como un control para seleccionar y editar las horas en
lugar de las fechas, establezca la propiedad ShowUpDown en true la propiedad Format en Time.
Para obtener ms informacin, vea Cmo: Mostrar la hora con el control DateTimePicker.
Cuando la propiedad ShowCheckBox se establece en true, se muestra una casilla de verificacin
junto a la fecha seleccionada en el control. Cuando se comprueba la casilla de verificacin, se
puede actualizar el valor de fecha y hora seleccionado. Cuando la casilla de verificacin est vaca,
el valor se muestra no disponible.
El control MaxDate y las propiedades MinDate determinan el intervalo de fechas y horas. La
propiedad Value contiene la fecha y la hora actuales en las que se establece el control. Para
obtener informacin detallada. Los valores se pueden mostrar en cuatro formatos establecidos
por la propiedad Format: Long, Short, Time o Custom. Si est seleccionado un formato
personalizado, debe establecer la propiedad CustomFormat en una cadena adecuada.

Mostrar una fecha en un formato personalizado con el control DateTimePicker


El control DateTimePicker de formularios Windows Forms proporciona flexibilidad para dar
formato a la presentacin de fechas y horas en el control. La propiedad Format le permite
seleccionar entre formatos predefinidos, que se enumeran en DateTimePickerFormat. Si ninguno
de ellos es adecuado para lograr el objetivo deseado, puede crear estilos de formato propios
utilizando los caracteres de formato que se enumeran en CustomFormat.

Para mostrar un formato personalizado


1. Establezca la propiedad Format en DateTimePickerFormat.Custom.
2. Establezca la propiedad CustomFormat como una cadena de formato.
DateTimePicker1.Format = DateTimePickerFormat.Custom
' Display the date as "Mon 26 Feb 2001".
DateTimePicker1.CustomFormat = "ddd dd MMM yyyy"

Para agregar texto al valor con formato

Utilice las comillas sencillas para agregar cualquier carcter que no sea un carcter de
formato, como "M" o un delimitador como ":". Por ejemplo, la siguiente cadena de formato
muestra la fecha actual con el formato "Today is: 05:30:31 Friday March 03, 2001" en la
referencia cultural Ingls (Estados Unidos).
DateTimePicker1.CustomFormat = "'Today is:' hh:mm:ss dddd MMMM dd, yyyy"

Mostrar la hora con el control DateTimePicker


Si desea que la aplicacin permita a los usuarios seleccionar una fecha y hora, y para mostrar esa f
echa y esa hora en el formato especificado, utilice el control DateTimePicker. El siguiente procedi
miento muestra cmo utilizar el control DateTimePicker para mostrar la hora.
1.

Establezca la propiedad Format en Time.

timePicker.Format = DateTimePickerFormat.Time
2.

Establezca la propiedad ShowUpDown para DateTimePicker en true.

timePicker.ShowUpDown = True

LinkLabel

El control LinkLabel de formularios Windows Forms permite agregar vnculos de estilo Web a aplic
aciones de Windows Forms. Puede utilizar el control LinkLabel para todo aquello para lo que pued
a utilizar el control Label. Tambin puede establecer parte del texto como un vnculo a un archivo,
una carpeta o una pgina Web.

Qu se puede hacer con el control LinkLabel


Adems de todas las propiedades, mtodos y eventos del control Label, el control LinkLabel posee
propiedades para hipervnculos y colores de vnculo. La propiedad LinkArea establece el rea del
texto que activa el vnculo. Las propiedades LinkColor, VisitedLinkColor y ActiveLinkColor
establecen los colores del vnculo. El evento LinkClicked determina qu ocurre cuando se
selecciona el texto del vnculo.
El uso ms simple del control LinkLabel es utilizarlo para mostrar un nico vnculo mediante la
propiedad LinkArea, aunque tambin se pueden mostrar varios hipervnculos con la propiedad
Links. La propiedad Links que permite obtener acceso a una coleccin de vnculos. Tambin puede
especificar los datos en la propiedad LinkData de cada objeto Link individual. El valor de la
propiedad LinkData se puede usar para almacenar la ubicacin de un archivo con el fin de mostrar
la direccin de un sitio Web.

Mostrar una pgina Web desde un control LinkLabel


En este ejemplo se muestra una pgina Web en el explorador predeterminado cuando un usuario
hace clic en un control LinkLabel de formularios Windows Forms.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles MyBase.Load
LinkLabel1.Text = "Click here to get more info."
LinkLabel1.Links.Add(6, 4, "www.microsoft.com")
End Sub
Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal _
e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles _
LinkLabel1.LinkClicked
System.Diagnostics.Process.Start(e.Link.LinkData.ToString())
End Sub

Timer

El control Timer es un temporizador que nos permite ejecutar instrucciones de cdigo, rutinas,
funciones etc..., cada cierto intervalo de tiempo.
Este control es invisible en tiempo de ejecucin, esto quiere decir que no tiene interfaz grfica,
solo es visible cuando lo agregamos a un formulario y estamos en modo de diseo .
La propiedad ms importante de este control es la propiedad Interval.
Definicin del propiedad Interval: Devuelve o establece el nmero de milisegundos
entre dos llamadas al evento Timer de un control Timer.
en castellano, esto quiere decir que la propiedad es la que determina el intervalo en el
que ejecutar las instrucciones que estn en el evento llamado Timer, que es el nico
evento que posee el control
Otra propiedad importante y que se utiliza mucho en este control es la propiedad Enabled. La
propiedad enabled lo que hace es habilitar o deshabilitar un control. Si est en True funciona, si
est en False no funciona. Esta propiedad es comn en la mayora de los controles de visual basic.

PictureBox
El control PictureBox se utiliza para mostrar y cargar archivos de imagen, tambin para dibujar
figuras mediante los mtodos grficos , y tambin como control contenedor de otros controles,
como los controles Frame.

Propiedades
Propiedad Picture
La principal propiedad del control PictureBox se llama precisamente Picture.
Esta propiedad es la que indica el grfico que estar cargado. Para cargar un grfico en visual basic
desde el disco, se usa la funcin LoadPicture. A Esta funcin le debemos indicar como parmetro
la ruta del fichero

Propiedad Autosize
Esta propiedad lo que hace es adaptar o ajustar el control a las dimensiones del grfico cargado.

Los posibles valores que le podemos dar son True o False. Si le pasamos True el control se
autoajusta al tamao de la imagen, si le pasamos False el control queda con el ancho y alto sin
autoajustarse al grfico

Usar el PictureBox como contenedor


El control PictureBox tambin funciona como contenedor de otro controles. Esto quiere decir que
podemos colocar controles TextBox, botones etc..., dentro del control , y estos estarn
contenidos.

Propiedad Container - Insertar controles en tiempo de ejecucin


Para poder colocar los controles dentro de un contenedor, podemos usar la propiedad Container.

Propiedad Autoredraw
La propiedad AutoRedraw es una propiedad muy importante y muy utilizada cuando se usa un
picturebox para dibujar sobre el control
Lo que permite hacer la propiedad Autoredraw, es que al estar activada (con el valor True), y
utilizar los mtodos grficos, por ejemplo dibujar un crculo, una linea, o cualquier imagen /
dibujo, cuando se repinte el control, la imagen no se pierda, es decir que se mantenga. De esta
manera Visual basic automticamente vuelve a dibujar la imagen. Esta propiedad por defecto se
encuentra en false. Luego es posible borrar la imagen con el mtodo Cls

Propiedad Image
La propiedad Image del control PicBox es una propiedad de solo lectura. Esta Devuelve un
controlador o manipulador, proporcionado por Microsoft Windows, para un mapa de bits
persistente.

ProgressBar
El control ProgressBar nos permite medir el progreso de una tarea o proceso en nuestro programa

Propiedades
Propiedad Value , Max y Min
Este control posee 3 propiedades fundamentales para trabajar en el cdigo a la hora de mostrar
dicho progreso en la barra.
Estas tres propiedades principales son:

Value: Propiedad que indica el valor actual de la barra, o mejor dicho del proceso que
estamos midiendo
Max : La Propiedad Max establece el valor mximo para la barra o proceso
Min : Establece el valor mnimo.

Propiedad Scrolling
Para cambiar el aspecto grfico del Progressbar, hay una propiedad llamada Scrolling. Esta tiene 2
valores posibles, 0 y 1.
Si le colocamos esta propiedad en 0, el Progress tendr una vista dividida por recuadros. Si tiene el
valor 1, la barra de progreso es continua, como se ve en la siguiente imagen.

Masked Textbox
Es una caja de texto que permite decidir el 'formato' correcto de lo que el usuario debe ingresar.
Para ello posee una propiedad llamada 'Mask' donde e indica los carcteres vlidos.
'0' acepta un nmero del cero al nueve
'9' acepta un nmero o un espacio
'L' acepta una letra
'?' acepta una letra o un espacio
',' separa numeros en miles
':' separa nmeros en horas, minutos, segundos
'/' separa da, mes, ao
'$' indica valor monetario
Ejemplo de mscara (fecha): 00/00/0000
Cuando el usuario ingresa un dato incorrectamente en una Masked Textbox, se produce el evento
MaskInputRejected, con un parmetro que indica en que punto est el error.

Adems, con la propiedad beepOnError, este control puede configurarse para que emita un sonido
que alerte al usuario.

RitchTextBox
Este control , similar a un TextBox pero que posee mas opciones, se debe aadir desde el men
Proyecto > Componentes bajo el nombre de Microsoft Rich TextBox Control, ya que no es un
control estndar.
A diferencia del control TextBox clsico, este permite por ejemplo: Cambiar el color de
determinada porcin de un texto, el tipo de fuente, mostrar imgenes, cargar archivos de texto
enriquecido ( archivos RTF ), leer y guardar archivos mediante una serie de mtodos que posee el
control, tanto RTF como TXT, buscar cadenas de texto dentro del control con un mtodo propio, y
muchas otras opciones.

Propiedades
Propiedades SelText , SelStart y SelLength
Estas tres propiedades, que tambin la posee el control TextBox, y algunos otros controles como el
ComboBox por ejemplo, permite:

SelText: Devuelve o establece la cadena que contiene el texto seleccionado actualmente.


SelStart: Devuelve o establece el punto inicial del texto seleccionado.
SelLength: Devuelve o establece el nmero de caracteres seleccionados.

Propiedades para modificar el estilo de fuente de la seleccin y otras


opciones

Para modificar y consultar el estilo de la fuente seleccionada en el control como algunas otras
caractersticas, como por ejemplo Negrita, Itlica, subrayado, color del texto, alineacin ,etc.., se
pueden utilizar las siguientes propiedades:

SelUnderline : Devuelve o establece el formato subrayado del texto seleccionado


actualmente.

SelStrikethru: Devuelve o establece el formato tachado del texto seleccionado


actualmente.

SelBold: Devuelve o establece el formato en negrita del texto seleccionado actualmente.

SelItalic: Devuelve o establece el formato en cursiva del texto

SelRTF: Devuelve o establece el texto (en formato .RTF) de la seleccin actual de un


control RichTextBox

SelFontSize: Devuelve o establece un valor que especifica el tamao de la fuente usada


para mostrar texto en un control RichTextBox.

SelFontName: Devuelve o establece la fuente usada para mostrar el texto seleccionado


actualmente o los caracteres que siguen inmediatamente al punto de insercin del control

SelColor: Devuelve o establece un valor que determina el color del texto en un control
RichTextBox.

SelBullet: Devuelve o establece un valor que determina si un prrafo en un control


RichTextBox que contiene la seleccin actual o el punto de insercin tienen el estilo de
Vieta.

SelAlignment: Devuelve o establece un valor que controla la alineacin de lo prrafos en


un control RichTextBox.

Propiedad AutoVerbMenu
Esta propiedad lo que hace es poder utilizar o no, el men emergente para copiar, pegar,
seleccionar etc..

Propiedad HideSelection
HideSelection, que tambin la posee algunos otros controles como por ejemplo el control
ListView, lo que hace es, si hay contenido seleccionado en el Rich y el mismo pierde el foco al
pasar a otro control u objeto, ocultar o no la seleccin.

Propiedad ScrollBars
Esta propiedad visualiza barras de desplazamiento si es necesario, y tiene cuatro valores posibles:
el 0 indica que no mostrar barras de scroll, el 1 Horizontal, el 2 Vertical, y el 3 Ambas barras.
Importante: esta propiedad se debe establecer en tiempo de diseo, ya que en tiempo de
ejecucin es de solo lectura. Por lo tanto se puede utilizar la propiedad DisableScroll para
desactivar o activar las barras en tiempo de ejecucin si es que necesitamos hacerlo.

Mtodo LoadFile y SaveFile


El mtodo LoadFile se utiliza para cargar un archivo .RTF o un archivo de texto en el control
RichTextBox.
En cambio el Mtodo SaveFile se utiliza para Guardar en un archivo el contenido del control.

Mtodo Find - Buscar cadenas dentro del RichTextBox


Como dice el ttulo, este mtodo se utiliza para buscar una cadena especificada en el texto del
control.
Pos = El_RichTextBox.Find(El_Texto, Inicio, Fin, Opciones)

Eventos del control RichTextBox


La mayora de los eventos son iguales a los que posee un control TextBox y los dems controles,
GotFocus, LostFocus, Change etc...
El nico evento propio y exclusivo del control es SelChange.
Este evento ocurre o se dispara cuando la seleccin de texto actual en el control RichTextBox ha
cambiado o cuando se ha movido el punto de insercin dentro del control.