<!--
  <!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd">

 -->

  <sect1 id="designing-forms">
    <title
>Diseño de formularios</title>

    <sect2 id="most-important-terms">
      <title
>Términos más importantes</title>
      <glosslist>
        <glossentry id="gloss-form">
          <glossterm
>Formulario</glossterm>
          <glossdef>
            <para
>Una ventana que se proporciona para introducir y presentar los datos fácilmente en la pantalla del equipo. </para>
          </glossdef>
        </glossentry>
        <glossentry id="gloss-form-data-source">
          <glossterm
>Origen de datos del formulario</glossterm>
          <glossdef>
            <para
>La base de datos o la consulta que suministra los datos que se muestran en el formulario. El origen de datos es necesario porque los propios formularios son las únicas <emphasis
>herramientas</emphasis
> para mostrar e introducir los datos, mientras que las tablas y las consultas son los orígenes de datos. Los formularios nuevos y vacíos no tienen asignado ningún origen de datos, por lo que no muestran ningún dato de la base de datos hasta que se les asigne un origen. </para>
          </glossdef>
        </glossentry>
        <glossentry id="gloss-form-field">
          <glossterm
>Campo del formulario</glossterm>
          <glossdef>
            <para
>Es directamente equivalente a una columna en una tabla o consulta. Lo más frecuente es que se utilicen campos para mostrar texto y números. Introducir un valor nuevo o cambiar el valor existente de un campo hará que se produzca los cambios en una tabla vinculada o en una columna de una consulta (después de aceptar el cambio). </para>
          </glossdef>
        </glossentry>
        <glossentry id="gloss-form-design">
          <glossterm
>Diseño del formulario</glossterm>
          <glossdef>
            <para
>Son las tareas que tiene que realizar para definir el aspecto y funciones del formulario. Para hacer esto, necesitará proporcionar el <glossterm linkend="gloss-form-data-source"
>origen de datos</glossterm
>, insertar diferentes los tipos de <glossterm linkend="gloss-form-field"
>campos del formulario</glossterm
> y situarlos en el lugar adecuado. </para>
          </glossdef>
        </glossentry>
        <glossentry id="gloss-form-widget">
          <glossterm
>Widgets del formulario</glossterm>
          <glossdef>
            <para
>Los elementos el formulario. Los principales tipos son:</para>
            <itemizedlist>
              <listitem>
                <para
>Widgets que muestran información, por ejemplo cuadro de texto o cuadro de imagen. Cada componente de este tipo puede <emphasis
>vincularse</emphasis
> a un campo del origen de datos (una tabla o una columna de una consulta). Por tanto, estos componentes se llaman de forma abreviada <glossterm linkend="gloss-form-field"
>campos del formulario</glossterm
>. </para>
              </listitem>
              <listitem>
                <para
>Los widgets pueden realizar una acción especificada, por ejemplo, un botón puede cerrar el formulario. Dentro de otras aplicaciones este tipo de componentes se llaman muchas veces <firstterm
>controles del formulario</firstterm
> porque puede realizar acciones previamente definidas para <emphasis
>controlar</emphasis
> el comportamiento de su aplicación de base de datos. </para>
              </listitem>
              <listitem>
                <para
>Otros widgets permiten enriquecer el aspecto del formulario, por ejemplo el «componente línea» puede separar visualmente dos áreas del formulario. </para>
              </listitem>
            </itemizedlist>
          </glossdef>
        </glossentry>
        <glossentry id="gloss-container-widget">
          <glossterm
>Widget contenedor</glossterm>
          <glossdef>
            <para
>Es un widget que puede <emphasis
>contener</emphasis
> otros widgets dentro de él. Por ejemplo, el widget marco o el widget pestaña son contenedores. La propia superficie del formulario es también un contenedor. El botón de orden no puede llamarse contenedor porque no es posible insertar otros widgets en su interior. En los casos más complejos un contenedor puede insertarse dentro de otro, siendo por tanto posible la anidación. </para>
            <!--
            <screenshot>
              <screeninfo
>Example container widgets</screeninfo>
              <mediaobject>
                <imageobject>
                  <imagedata fileref="img/05_04_01_widget_containers.png" format="PNG"/>
                </imageobject>
                <textobject>
                  <phrase
>Example container widgets</phrase>
                </textobject>
              </mediaobject>
            </screenshot
>-->
          </glossdef>
        </glossentry>
      </glosslist>
    </sect2>

    <sect2 id="forms-versus-tables">
      <title
>Formularios frente a tablas</title>
      <para
>En el capítulo 5.2 aprendió cómo introducir datos directamente en las tablas utilizando la vista de la hoja de datos. Sin embargo, en muchos casos son más aconsejables los formularios para introducir datos: </para>
      <itemizedlist>
        <listitem>
          <para
>Una tabla puede contener demasiadas columnas para mostrarse en su pantalla. Los formularios puede mostrar estos datos utilizando varias filas. </para>
        </listitem>
        <listitem>
          <para
>Los formularios permiten dividir visualmente los <glossterm linkend="gloss-form-field"
>campos</glossterm
> de los datos en grupos lógicos, para incrementar su legibilidad. Pueden insertarse etiquetas con información adicional para dar a los usuarios más pistas de cómo utilizar el formulario o lo que significan los datos de los <glossterm linkend="gloss-form-field"
>campos</glossterm
>. </para>
        </listitem>
        <listitem>
          <para
>Los botones de órdenes puede utilizarse dentro de los formularios para llevar a cabo las órdenes más comunes, de forma que los usuarios pueden utilizar los formularios de forma similar a una aplicación específica que ya conozcan. </para>
        </listitem>
        <listitem>
          <para
>Es mucho más sencillo mostrar los <glossterm linkend="gloss-form-field"
>campos</glossterm
> de datos de texto en varias columnas o las imágenes dentro de los formularios. </para>
        </listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title
>Trabajar con el diseño de formularios</title>
      <para
>Como en la tabla o en el diseño de la consulta, es posible utilizar la <interface
>Vista de datos</interface
> y la <interface
>Vista de diseño</interface
>. El diseño de los formularios se realiza en la <interface
>Vista de diseño</interface
>. Con frecuencia nos referiremos a la ventana de diseño del formulario como al <interface
>Diseñador del formulario</interface
>. </para>
      <procedure>
        <step>
          <para
>Para crear un formulario nuevo vacío, seleccione <menuchoice
><guimenu
>Insertar</guimenu
><guimenuitem
>Formulario</guimenuitem
></menuchoice
> de la barra de menú. Opcionalmente, puede utilizar la orden <menuchoice
><guimenuitem
>Formulario nuevo</guimenuitem
></menuchoice
> del desplegable de la barra de herramientas del <interface
>Navegador del proyecto</interface
> o la orden <menuchoice
><guimenuitem
>Crear objeto: Formulario</guimenuitem
></menuchoice
> del menú contextual. </para>
        </step>
        <step>
          <para
>Aparecerá una ventana nueva con un rectángulo vacío. En la parte exterior del formulario se encuentra el área formada por los bordes. Puede mover los bordes para redimensionar la superficie del formulario. La superificie está cubierta por una rejilla dibujada utilizando puntos, lo que simplifica posicionar los widgets de forma exacta. </para>
          <!--<screenshot>
            <screeninfo
>A window with design of a new form</screeninfo>
            <mediaobject>
              <imageobject>
                <imagedata fileref="img/05_04_03_new_empty_form.png" format="PNG"/>
              </imageobject>
              <textobject>
                <phrase
>A window with design of a new form</phrase>
              </textobject>
            </mediaobject>
          </screenshot
>-->
        </step>
      </procedure>
      <para
>Como en el diseño de la tabla, el <interface
>Diseñador de formularios</interface
> proporciona un <interface
>Panel de propiedades</interface
>. Para ahorrar espacio en la pantalla, el panel se ha dividido con tres pestañas relacionadas con el formulario seleccionado: </para>
      <variablelist>
        <varlistentry>
          <term
>Pestaña <guilabel
>Propiedades</guilabel
></term>
          <listitem>
            <para
>Contiene una lista de las propiedades para los widgets seleccionados.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
>Pestaña <guilabel
>Origen de datos</guilabel
> </term>
          <listitem>
            <para
>Contiene propiedades específicamente relacionadas con la <glossterm linkend="gloss-form-data-source"
>origen de datos</glossterm
> del widget seleccionado o del propio formulario. </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
>Pestaña <guilabel
>Widgets</guilabel
> </term>
          <listitem>
            <para
>Contiene una jerarquía de todos los componentes del formulario. La lista simplifica la búsqueda de los widgets por el nombre y permite navegar por ellos. </para>
          </listitem>
        </varlistentry>
      </variablelist>
      <para
>Se muestra información sobre el nombre y el tipo de widget seleccionado en la primera y segunda pestaña. </para>
      <para
>También están disponibles otras barras de herramientas:</para>
      <itemizedlist>
        <listitem>
          <para
>Barra de herramientas <guilabel
>Widgets</guilabel
> para insertar nuevos widgets en el formulario. </para>
        </listitem>
        <listitem>
          <para
>Barra de herramientas <guilabel
>Formato</guilabel
> utilizada para dar formato a los elementos del formulario (por ejemplo, ajustar el tamaño del componente, agrupamiento). Las órdenes de formateo están disponibles también en el menú <guimenu
>Formato</guimenu
>. Puede consultar más información sobre estas órdenes en el apéndice A.6. Menú Formato. </para>
        </listitem>
      </itemizedlist>
    </sect2>

    <sect2 id="using-the-widgets-tab">
      <title
>Utilizar la pestaña <guilabel
>Widgets</guilabel
></title>
      <para
>La pestaña <guilabel
>Widgets</guilabel
> en el <interface
>Panel propiedades</interface
> proporciona una lista de los componentes del formulario y su jerarquía. Cada widget se presenta dentro de la jerarquía al lado de de otros widgets del mismo nivel (el mismo contendor padre). Los widgets hijo (dentro de los contenedores) se presentan sangrando los nombres. </para>
      <!--<para
>In the picture below, the form (a container) contains two widgets:
        <guilabel
>groupBox2</guilabel
> and <guibutton
>options</guibutton
> command button. In
        turn, <guilabel
>groupBox2</guilabel
> (being a container itself) contains two check box
        widgets.
      </para>
      <screenshot>
        <screeninfo
>Using the <quote
>Widgets</quote
> tab</screeninfo>
        <mediaobject>
          <imageobject>
            <imagedata fileref="img/05_04_04_widgets_tab.png" format="PNG"/>
          </imageobject>
          <textobject>
            <phrase
>Using the <quote
>Widgets</quote
> tab</phrase>
          </textobject>
        </mediaobject>
      </screenshot
>-->
      <para
>Cada widget se muestra con su nombre y tipo. El tipo también se muestra con un icono: el mismo que se muestra en la barra de herramientas utilizada mientras se diseñaba el formulario. </para>
      <note>
        <itemizedlist>
          <listitem
> 
            <para
>Cambiar la selección actual de la lista hace que se realice la selección correspondiente en el formulario. Ésto permite buscar de forma sencillo el widget a partir de su nombre, haciendo también más sencilla la navegación. Por ejemplo, es posible seleccionar un widget por el nombre, y a continuación cambiar a la pestaña <guilabel
>Propiedades</guilabel
> para cambiar las propiedades del componente.</para>
          </listitem>
          <listitem>
            <para
>Mantener pulsada la tecla &Ctrl; mientras se selecciona un elemento de la lista de widgets permite realizar varios widgets a la vez. Mantener pulsada la tecla &Shift; permite seleccionar listas enteras de widgets.</para>
          </listitem>
          <!--<listitem>
            <para>
              When widget is inserted, it is recommended to give it a reasonable name.
              For example, <guilabel
>green</guilabel
> check box widget has been named specifically
              for its meaning, using the <guilabel
>Properties</guilabel
> tab
              (<guilabel
>Name</guilabel
> property has been used to do that). Such change
              can make it easier to find a widget within the list.
            </para>
            <screenshot>
              <screeninfo
>Naming the widget as <guilabel
>green</guilabel
></screeninfo>
              <mediaobject>
                <imageobject>
                  <imagedata fileref="img/05_04_04_renaming_widgets.png" format="PNG"/>
                </imageobject>
                <textobject>
                  <phrase
>Naming the widget as <guilabel
>green</guilabel
></phrase>
                </textobject>
              </mediaobject>
            </screenshot>
          </listitem
>-->
        </itemizedlist>
      </note>
      <para
>Dar a los widgets nombres razonables puede se práctico, pero no es obligatorio. Tenga en cuenta que el nombre de los widget es una propiedad que no es visible para el usuario de su formulario. Los usuarios solo verán un texto en un widget, proporcionando la propiedad <varname
>Texto</varname
> u otra similar. </para>
    </sect2>
    
    <sect2 id="inserting-widgets-text-fields">
      <title
>Insertar componentes: campos de texto</title>
      <para
>Le permite crear un formulario proporcionando información sobre las personas, por ejemplo, en un formulario conectado con la tabla <literal
>Personas</literal
>. </para>
      <para
>Si el formulario diseñado debe presentar datos obtenidos de la base de datos, necesitará colocar los <glossterm linkend="gloss-form-field"
>campos</glossterm
> apropiados en él. Para hacer esto, utilice la barra de herramientas <guilabel
>Widgets</guilabel
> que contiene un conjunto de conmutadores. Cada botón se corresponde con un tipo de widget simple. </para>
      <procedure>
        <step>
          <para
>Pulse el botón <guibutton
>Casilla de texto</guibutton
> en la barra de herramientas <guilabel
>Componentes</guilabel
>. </para>
        </step>
        <step>
          <para
>Pulse en la superficie del formulario con el botón <mousebutton
>izquierdo</mousebutton
> del ratón. Se mostrará un nuevo cuadro de texto en el lugar en sobre el que se pulsó. Antes de liberarlo puede arrastrar su ratón para especificar el tamaño deseado para el widget. </para>
        </step>
        <step>
          <para
>Si es necesario, desplace el widget insertado arrastrándolo y soltándolo en la posición deseada. Puede redimensionar el componente arrastrando uno de los cuadraditos que se encuentran en sus esquinas. Tenga en cuenta que los cuadros son sólo visibles cuando se ha seleccionado el widget. Si selecciona otro widget o la superficie del formulario, los cuadro desaparecerán. </para>
        </step>
        <step>
          <para
>Pulse nuevamente el botón <guibutton
>Casilla de texto</guibutton
> de la barra de herramientas y pulse en la superficie del formulario para insertar otro widget. Repita esta acción nuevamente hasta que haya insertado tres casillas de texto en su formulario. Por el bien de la simplicidad nos limitaremos a estos tres <glossterm linkend="gloss-form-field"
>campos</glossterm
> de datos. </para>
        </step>
      </procedure>
      <note>
        <itemizedlist>
          <listitem>
            <para
>Existe un menú contextual en el modo de diseño de formulario, que se activa pulsando con el botón <mousebutton
>derecho</mousebutton
> del ratón en el widget seleccionado o en la superficie del formulario. El menú ofrece órdenes como <guimenuitem
>Cortar</guimenuitem
>, <guimenuitem
>Copiar</guimenuitem
>, <guimenuitem
>Pegar</guimenuitem
>, <guimenuitem
>Borrar</guimenuitem
> y otros, más complejos. También podemos ver muchas de las órdenes de la <guilabel
>Barra de herramientas</guilabel
>, normalmente <guimenuitem
>Editar</guimenuitem
>. También están disponibles para estas órdenes los accesos rápidos de teclado. Algunas de estas órdenes solo están disponibles para cierto tipos de widgets. </para>
          </listitem>
          <listitem>
            <para
>Las órdenes <guimenuitem
>Cortar</guimenuitem
>, <guimenuitem
>Copiar</guimenuitem
> y <guimenuitem
>Pegar</guimenuitem
> hacen posible mover o copiar los widgets entre formularios, incluso entre proyectos de bases de datos separados. </para>
          </listitem>
          <listitem>
            <para
>Mantener pulsada la tecla &Ctrl; mientras pulsa un componente le permite seleccionar varios widgets. </para>
          </listitem>
          <listitem>
            <para
>En lugar de utilizar las órdenes <guimenuitem
>Copiar</guimenuitem
> y <guimenuitem
>Pegar</guimenuitem
>, para duplicar un widget en el mismo formulario, puede mantener pulsada la tecla &Ctrl; mientras mueve el widget. Después de que suelte la tecla &Ctrl;, el widget arrastrado no se habrá movido y se copiará en la nueva ubicación. </para>
          </listitem>
        </itemizedlist>
      </note>
    </sect2>

    <sect2 id="assigning-data-sources">
      <title
>Ajustar origen de datos</title>
      <para
>Los <glossterm linkend="gloss-form-field"
>campos</glossterm
> insertados todavía no tienen asignada una <emphasis
>origen de datos</emphasis
>, y por eso no puede mostrar información de la base de datos. Para asignar el origen de datos, tenemos la pestaña <guilabel
>Origen de datos</guilabel
> del <interface
>Panel propiedades</interface
>. </para>
      <para
>El primer paso es especificar la <glossterm linkend="gloss-form-data-source"
>origen de datos del formulario</glossterm
>, es decir, el lugar del que se tomarán los datos. Como se mencionó anteriormente, utilizaremos la tabla <literal
>personas</literal
> como <glossterm linkend="gloss-form-data-source"
>origen de datos</glossterm
> para su formulario nuevo. </para>
      <procedure>
        <step>
          <para
>Pulse en la superficie del formulario, para modificar sus propiedades.</para>
        </step>
        <step>
          <para
>Cambie a la pestaña <guilabel
>Origen de datos</guilabel
> e introduzca el nombre de la tabla <literal
>personas</literal
> en la lista desplegable. También puede seleccionar este nombre de la lista desplegable. </para>
          <!--<screenshot>
            <screeninfo
>Entering <glossterm linkend="gloss-form-data-source"
>form's data source</glossterm
> name</screeninfo>
            <mediaobject>
              <imageobject>
                <imagedata fileref="img/05_04_05_entering_form_data_source.png" format="PNG"/>
              </imageobject>
              <textobject>
                <phrase
>Entering <glossterm linkend="gloss-form-data-source"
>form's data source</glossterm
> name</phrase>
              </textobject>
            </mediaobject>
          </screenshot
>-->
        </step>
      </procedure>
      <para
>Ha asignado el <glossterm linkend="gloss-form-data-source"
>origen de los datos del formulario</glossterm
>. Ahora necesita especificar el origen de los datos del campo del widget. </para>
      <procedure>
        <step>
          <para
>Pulse en el primer widget de campo de texto de la parte superior del formulario.</para>
        </step>
        <step>
          <para
>En la pestaña <guilabel
>Origen de datos</guilabel
> del panel de propiedades introduzca el nombre del campo <varname
>nombre</varname
> en la lista desplegable del <emphasis
>origen de datos</emphasis
>. También puede seleccionar este nombre de la lista desplegable. </para>
          <!--<screenshot>
            <screeninfo
>Entering widget's data source name</screeninfo>
            <mediaobject>
              <imageobject>
                <imagedata fileref="img/05_04_05_entering_text_field_data_source.png" format="PNG"/>
              </imageobject>
              <textobject>
                <phrase
>Entering widget's data source name</phrase>
              </textobject>
            </mediaobject>
          </screenshot
>-->
        </step>
        <step>
          <para
>Pulse en el siguiente widget del campo de texto e introduzca <varname
>apellido</varname
> como fuente de datos.</para>
        </step>
        <step>
          <para
>Introduzca el origen de datos para los <glossterm linkend="gloss-form-field"
>campos</glossterm
> de texto <varname
>calle</varname
>, <varname
>numero_casa</varname
> y <varname
>ciudad</varname
> de forma similar. </para>
        </step>
      </procedure>
      <para
>Ahora puede guardar el diseño de su formulario (no es obligatorio para probarlo). Para guardarlo, pulse el botón <guilabel
>Guardar cambios de los objetos</guilabel
> de la barra de herramientas o utilice la orden de menú <menuchoice
><shortcut
><keycombo action="simul"
>&Ctrl;<keycap
>S</keycap
></keycombo
></shortcut
> <guimenu
>Archivo</guimenu
><guimenuitem
>Guardar</guimenuitem
></menuchoice
>. Durante el proceso se le pedirá que introduzca un nombre para el formulario. Introduzca <literal
>Personas</literal
> como etiqueta y pulse el botón <guibutton
>Aceptar</guibutton
>. El nombre del formulario se rellenará automáticamente. </para>
      <para
>Este es el momento adecuado para probar su formulario. Pulse el botón <guibutton
>Cambia a la vista de datos</guibutton
> de la barra de herramientas. A menos que haya cometido un error al introducir el origen de los datos, debería ver los <glossterm linkend="gloss-form-field"
>campos del formulario</glossterm
> rellenados con los datos procedentes de la tabla <literal
>personas</literal
>. </para>
      <!--<screenshot>
        <screeninfo
>The <literal
>Persons</literal
> form in data view after inserting text fields and assigning data sources</screeninfo>
        <mediaobject>
          <imageobject>
            <imagedata fileref="img/05_04_06_form_with_text_fields.png" format="PNG"/>
          </imageobject>
          <textobject>
            <phrase
>The <literal
>Persons</literal
> form in data view after inserting text fields and assigning data sources</phrase>
          </textobject>
        </mediaobject>
      </screenshot
>-->
      <note>
        <itemizedlist>
          <listitem>
            <para
>Si desea eliminar la asignación del <glossterm linkend="gloss-form-data-source"
>origen de los datos</glossterm
> para un widget de un formulario, puede utilizar el botón <guibutton
>Limpiar la fuente de datos del widget</guibutton
> situado al lado del desplegable <guilabel
>Campo de origen</guilabel
>. De forma similar, puede utilizar el botón <guibutton
>Limpiar fuente de datos</guibutton
> situado al lado del desplegable <guilabel
>Fuente de datos del formulario</guilabel
>. </para>
          </listitem>
          <listitem>
            <para
>Utilice el botón <guibutton
>Ir al origen de datos seleccionado</guibutton
> para seleccionar la tabla o consulta adecudas en el <interface
>Navegador del proyecto</interface
>, de forma que puede abrir una tabla o una consulta rápidamente a partir del <glossterm linkend="gloss-form-data-source"
>origen de datos</glossterm
> del formulario. </para>
          </listitem>
        </itemizedlist>
        <!-- TODO: mention about creating Auto Fields by using drag & drop -->
      </note>
    </sect2>

    <sect2 id="inserting-text-labels">
      <title
>Insertar etiquetas de texto</title>
      <para
>Para hacer más fácil al usuario la identificación del significado de cada campo del widget, se pueden añadur etiquetas de texto con los títulos adecuados. Para crear etiquetas de texto se utiliza el widget <literal
>Etiqueta</literal
>. </para>
      <para
>Inserte tres etiquetas de texto en el formulario, y sitúelas a la izquierda de los campos de texto (o en la parte derecha si su sistema operativo utiliza disposición de derecha-a-izquierda). Al insertar cada etiqueta nueva, aparecerá un cursor de texto para que pueda introducir el título deseado. Introduzca consecutivamente: <literal
>Nombre</literal
>, <literal
>Apellido</literal
> y <literal
>Dirección</literal
>. Inserte también otra etiqueta en la parte superior del formulario para mostrar el nombre del mismo, es decir, <literal
>Personas</literal
>. Agrande el tamaño de esta etiqueta y establezca una letra más grande utilizando la orden del menú <menuchoice
><guimenu
>Formato</guimenu
><guimenuitem
>Tipografía</guimenuitem
></menuchoice
>. </para>
      <!--<screenshot>
        <screeninfo
>Ready to use form after adding text labels</screeninfo>
        <mediaobject>
          <imageobject>
            <imagedata fileref="img/05_04_06_form_with_labels.png" format="PNG"/>
          </imageobject>
          <textobject>
            <phrase
>Ready to use form after adding text labels</phrase>
          </textobject>
        </mediaobject>
      </screenshot
>-->
    </sect2>

    <sect2 id="actions">
      <title
>Acciones</title>
      <para
><literal
>Acción</literal
> es una actividad simple aislada en la aplicación y que estará disponible para que el usuario la ejecute. También puede ejecutarse automáticamente como reacción a un evento dado (por ejemplo, después de abrir un formulario). </para>

      <sect3 id="assigning-actions-to-form-buttons">
        <title
>Asignar acciones a los botones del formulario</title>
        <para
>La mayor parte de las acciones se pueden asignar a los botones del formulario. La acción asignada se ejecutará después de que se pulse el botón. </para>
        <para
>Para asignar una acción:</para>
        <procedure>
          <step>
            <para
>Cambie a la vista de diseño del formulario si no lo ha hecho todavía.</para>
          </step>
          <step>
            <para
>Seleccione el widget botón existente pulsando sobre él o situando un nuevo widget botón en el formulario. Si ha insertado un botón nuevo, introduzca su título y pulse la tecla <keycombo action="press"
>&Enter;</keycombo
>. </para>
          </step>
          <step>
            <para
>Pulse el widget botón con el &RMB; para mostrar el menú contextual. </para>
          </step>
          <step>
            <para
>En el menú contextual seleccione la orden <guimenuitem
>Asignar acción...</guimenuitem
>. </para>
          </step>
          <step>
            <para
>Aparecerá un diálogo <guilabel
>Asignar acción a botón de orden</guilabel
> presentando una lista de acciones disponibles. Si el widget ya tenía una acción asignada, ésta se seleccionará. Sino, el desplegable <guilabel
>Tipo de acción</guilabel
> tendrá seleccionado el elemento <guilabel
>Ninguna acción</guilabel
>. </para>
          </step>
          <step>
            <para
>En el desplegable <guilabel
>Tipo de acción</guilabel
> seleccione el elemento <guilabel
>Aplicación</guilabel
>. Se listarán todas las acciones disponibles para la aplicación. </para>
          </step>
          <step>
            <para
>Seleccione una de las acciones de la lista (por ejemplo, <guilabel
>Eliminar fila</guilabel
>).</para>
          </step>
          <step>
            <para
>Pulse el botón <guibutton
>Aceptar</guibutton
> o la tecla <keycombo action="press"
>&Enter;</keycombo
> para aceptar su selección. </para>
          </step>
        </procedure>
        <!--<screenshot>
          <screeninfo
>Assigning <guilabel
>Delete Row</guilabel
> action to a form's button</screeninfo>
          <mediaobject>
            <imageobject>
              <imagedata fileref="img/05_04_07_assigning_action_to_button.png" format="PNG"/>
            </imageobject>
            <textobject>
              <phrase
>Assigning <guilabel
>Delete Row</guilabel
> action to a form's button</phrase>
            </textobject>
          </mediaobject>
        </screenshot
>-->
        <para
>Después de cambiar a la <emphasis
>vista de datos</emphasis
> del formulario puede probar como funciona la acción. Por ejemplo, si asignó la acción <guilabel
>Eliminar fila</guilabel
>, si pulsa el botón, se borrará la fila actual de la base de datos, de forma similar que si ejecutase la orden del menú <menuchoice
><shortcut
><keycombo action="simul"
>&Ctrl;<keycap
>Supr</keycap
></keycombo
></shortcut
><guimenu
>Editar</guimenu
><guimenuitem
>Eliminar fila</guimenuitem
></menuchoice
> (dependiendo de sus preferencias puede pedírsele confirmación para la eliminación). </para>

      <note>
        <itemizedlist>
          <listitem>
            <para
>Para eliminar la acción asignada, seleccione el elemento <guilabel
>Ninguna acción</guilabel
> en el desplegable <guilabel
>Tipo de acción</guilabel
> del diálogo <guilabel
>Asignar acción a botón de orden</guilabel
>. </para>
          </listitem>
          <listitem>
            <para
>Las acciones solo funcionan en la <emphasis
>vista de datos</emphasis
> del formulario. No todas las asignaciones de acciones son razonables. Por ejemplo, la acción <guimenuitem
>Tipografía</guimenuitem
> no estará disponible en la vista de datos del formulario, es decir, que si la asigna no tendrá ningún efecto. </para>
          </listitem>
        </itemizedlist>
      </note>
      </sect3>
    </sect2>

    <sect2 id="widget-layouts">
      <title
>Disposición de los widgets</title>
      <para
>En la mayor parte de los casos los widgets deberían tener una ubicación razonable y alineada. Posicionar, alinear y redimensionar los widgets manualmente no es sencillo y estos parámetros no se ajustan cuando el usuario redimensiona el formulario. De hecho, la situación puede ser peor porque no puede asumirse que un formulario dado requiere un espacio determinado debido a que los usuarios tienen diferentes tamaños de letra y de resolución de pantalla. </para>
      <!--
      <para>
        The following example presents a form where text fields and labels were
        placed by hand. Some of them cannot fit in the form's window.
      </para>
      <screenshot>
        <screeninfo
>An example form with widgets that cannot not fit in the window</screeninfo>
        <mediaobject>
          <imageobject>
            <imagedata fileref="img/05_04_08_form_no_fit.png" format="PNG"/>
          </imageobject>
          <textobject>
            <phrase
>An example form with widgets that cannot not fit in the window</phrase>
          </textobject>
        </mediaobject>
      </screenshot
>-->
      <para
>Utilizar una herramienta especiar llamada disposición de los widget puede ayudarle a distribuir automáticamente los widgets en el formulario. Distribuir los widgets es una acción que permite agrupar dos o más widgets de forma que se posicionen correctamente y tengan los tamaños adecuados. </para>
      <para
>Utilizar la disposición en este formulario mejora la alineación. Además, su espacio se desarrolla mejor. Los campos de texto están cerca unos de otros y el espaciado es constante. </para>
      <!--<screenshot>
        <screeninfo
>Example form with layout used</screeninfo>
        <mediaobject>
          <imageobject>
            <imagedata fileref="img/05_04_08_form_well_fit.png" format="PNG"/>
          </imageobject>
          <textobject>
            <phrase
>Example form with layout used</phrase>
          </textobject>
        </mediaobject>
      </screenshot
>-->
      <para
>Existen dos métodos para crear una disposición de widget.</para>
      <itemizedlist>
        <listitem>
          <para
>Seleccione dos o más widgets que deban situarse en una disposición común, y seleccione uno de los tipos de disposición del elemento del menú contextual <guilabel
>Disposición de widget</guilabel
>. </para>
        </listitem>
        <listitem>
          <para
>Pulse en un widget contenedor (o en la superficie del formulario), en la que estén insertados y seleccione uno de los tipos de disposición del menú contextual Disposición de widgets. Todos los widgets existentes dentro del contenedor o del formulario, que tengan el mismo nivel se distribuirán de acuerdo con la disposición establecida. </para>
        </listitem>
      </itemizedlist>
      <para
>En cada uno de estos casos también puede utilizar el menú <menuchoice
><guimenu
>Formato</guimenu
><guimenuitem
>Disposición de widgets</guimenuitem
></menuchoice
>. </para>
      <!--<screenshot>
        <screeninfo
>Selecting widgets that will be put into a layout</screeninfo>
        <mediaobject>
          <imageobject>
            <imagedata fileref="img/05_04_08_form_layout_selecting.png" format="PNG"/>
          </imageobject>
          <textobject>
            <phrase
>Selecting widgets that will be put into a layout</phrase>
          </textobject>
        </mediaobject>
      </screenshot>
      <screenshot>
        <screeninfo
>Four widgets are selected</screeninfo>
        <mediaobject>
          <imageobject>
            <imagedata fileref="img/05_04_08_form_layout_selected.png" format="PNG"/>
          </imageobject>
          <textobject>
            <phrase
>Four widgets are selected</phrase>
          </textobject>
        </mediaobject>
      </screenshot>
      <screenshot>
        <screeninfo
>Using the context menu for putting the widgets into a grid layout</screeninfo>
        <mediaobject>
          <imageobject>
            <imagedata fileref="img/05_04_08_form_layout_popup.png" format="PNG"/>
          </imageobject>
          <textobject>
            <phrase
>Using the context menu for putting the widgets into a grid layout</phrase>
          </textobject>
        </mediaobject>
      </screenshot
>-->
      <para
>La disposición de los widget se presenta en la vista de diseño utilizando una caja azul, verde o roja con línea punteada. Esta línea solo se muestra en el modo de diseño del formulario. </para>
      <!--<screenshot>
        <screeninfo
>Widgets within a grid layout</screeninfo>
        <mediaobject>
          <imageobject>
            <imagedata fileref="img/05_04_08_form_layout_grid.png" format="PNG"/>
          </imageobject>
          <textobject>
            <phrase
>Widgets within a grid layout</phrase>
          </textobject>
        </mediaobject>
      </screenshot
>-->
      <para
>Además del tipo rejilla, existen otros tipos de disposiciones de widget.</para>
      <variablelist>
        <varlistentry>
          <term
>vertical</term>
          <listitem>
            <para
>Disposición de widgets vertical</para>
            <!--<screenshot>
              <screeninfo
>Vertical widget layout</screeninfo>
              <mediaobject>
                <imageobject>
                  <imagedata fileref="img/05_04_08_form_layout_vertical.png" format="PNG"/>
                </imageobject>
                <textobject>
                  <phrase
>Vertical widget layout</phrase>
                </textobject>
              </mediaobject>
            </screenshot
>-->
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
>horizontal</term>
          <listitem>
            <para
>Disposición de widgets horizontal</para>
            <!--<screenshot>
              <screeninfo
>Horizontal widget layout</screeninfo>
              <mediaobject>
                <imageobject>
                  <imagedata fileref="img/05_04_08_form_layout_horizontal.png" format="PNG"/>
                </imageobject>
                <textobject>
                  <phrase
>Horizontal widget layout</phrase>
                </textobject>
              </mediaobject>
            </screenshot
>-->
          </listitem>
        </varlistentry>
        <!-- TODO podzia poziomy / pionowy 
         <br
><img src="img/05_04_08_form_layout_vertical_splitter.png">
         <br
><br>
         <br
><img src="img/05_04_08_form_layout_horizontal_splitter.png">
         <br
><br>
        </li
> -->
      </variablelist>

      <sect3 id="springs-in-widget-layouts">
        <title
>Muelles en la disposición de widgets</title>
        <para
>Un <emphasis
>muelle</emphasis
> es una disposición widgets con un elemento especial e invisible que permite ajustar la posición y tamaño dentro de la disposición. Como un muelle se estira o encoje un widget a la derecha, arriba, abajo o a la izquierda, puede tener el tamaño y posición deseadas. </para>
        <para
>Para utilizar un muelle:</para>
        <procedure>
          <step>
            <para
>Seleccione el icono muelle en la barra de herramientas <guilabel
>Widgets</guilabel
>. </para>
          </step>
          <step>
            <para
>Pulsa en un punto seleccionado del formulario para insertar el muelle.</para>
          </step>
        </procedure>
        <!--<para>
          For the following example, the spring has been inserted on the left
          hand of the text label "Persons". The label is thus displayed on the
          right hand of the form. To make the spring work, it has been put into
          a common horizontal layout with the label.
        </para>
        <screenshot>
          <screeninfo
>Horizontal layout containing a spring and a text label</screeninfo>
          <mediaobject>
            <imageobject>
              <imagedata fileref="img/05_04_08_form_spring.png" format="PNG"/>
            </imageobject>
            <textobject>
              <phrase
>Horizontal layout containing a spring and a text label</phrase>
            </textobject>
          </mediaobject>
        </screenshot
>-->
        <para
>Para conseguir que funcione el muelle necesitará crear una disposición global de widget, por ejemplo una disposición para la propia forma. A continuación, los muelles podrán utilizar los bordes del formulario como límite para expandirse. </para>
      </sect3>
      <!--
      
      TODO: The entire text in this section is built around a screenshot
            example, so it's commented out for now.

      <sect3 id="advanced-widget-layouts">
        <title
>Advanced widget layouts</title>
        <para>
          Widget layouts can be combined (or nested). On the following example
          you can identify two nested layouts:
        </para>
        <orderedlist>
          <listitem>
            <para>
              Horizontal layout with a spring, aligning the <literal
>Persons</literal>
              text label to the right.
            </para>
          </listitem>
          <listitem>
            <para
>Grid layout grouping widgets on the whole form.</para>
          </listitem>
        </orderedlist>
        <screenshot>
          <screeninfo
>Two widget layouts combined: horizontal layout inside of a grid layout</screeninfo>
          <mediaobject>
            <imageobject>
              <imagedata fileref="img/05_04_08_form_advanced_layout.png" format="PNG"/>
            </imageobject>
            <textobject>
              <phrase
>Two widget layouts combined: horizontal layout inside of a grid layout</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
        <para>
          The horizontal layout is treated in the example as a single widget by
          the grid layout - it takes exactly one <quote
>cell</quote
> of the grid.
          After opening a form designed this way in the data view, you can notice
          (by resizing the form) that:
        </para>
        <itemizedlist>
          <listitem>
            <para>
              <literal
>Persons</literal
> text label thanks to the spring used is constantly
              aligned to the to the right side of the form.
            </para>
          </listitem>
          <listitem>
            <para>
              Text fields take all of the available width thanks to putting them
              into the grid layout.
            </para>
          </listitem>
          <listitem>
            <para>
              All the form's widgets are pushed to the top thanks to the spring
              used at the bottom of the form.
            </para>
          </listitem>
        </itemizedlist>
        <screenshot>
          <screeninfo
>The form using the two layouts displayed in data view</screeninfo>
          <mediaobject>
            <imageobject>
              <imagedata fileref="img/05_04_08_form_advanced_layout_view.png" format="PNG"/>
            </imageobject>
            <textobject>
              <phrase
>The form using the two layouts displayed in data view</phrase>
            </textobject>
          </mediaobject>
        </screenshot>
      </sect3
>-->

      <sect3 id="removing-widget-layouts">
        <title
>Eliminar disposiciones de widgets</title>
        <para
>Para eliminar una disposición de widget sin eliminar los widgets, puede llevar a cabo una de estas acciones: </para>
        <itemizedlist>
          <listitem>
            <para
>Pulse con el botón <mousebutton
>derecho</mousebutton
> del ratón en el borde de la disposición y seleccione la orden <guimenuitem
>Romper disposición</guimenuitem
> en el menú contextual. </para>
          </listitem>
          <listitem>
            <para
>Pulse con el botón <mousebutton
>izquierdo</mousebutton
> del ratón en el borde de la disposición y seleccione en el menú la orden <menuchoice
><guimenu
>Formato</guimenu
><guimenuitem
>Romper disposición</guimenuitem
></menuchoice
>. </para>
          </listitem>
        </itemizedlist>
        <note>
          <para
>Eliminar la disposición de widgets utilizando la orden <guimenuitem
>Romper disposición</guimenuitem
> no eliminará los widgets que estuvieran incluidos en la disposición. Si desea eliminar también los widgets, solo necesitará seleccionar la disposición pulsando en sus bordes y pulsar la tecla <keycap
>Supr</keycap
> o utilizar la orden <menuchoice
><guimenu
>Editar</guimenu
><guimenuitem
>Eliminar</guimenuitem
></menuchoice
> del menú o del menú contextual. </para>
        </note>
      </sect3>

      <sect3 id="size-policies-for-widgets-within-a-layout">
        <title
>Políticas de tamaño para los widgets dentro de una disposición</title>
        <para
>En lugar de configurar un tamaño fijo para sus widgets, en &kexi; puede elegir entre varias políticas de tamaños diferentes. Una <emphasis
>política de tamaño</emphasis
> es una estrategia flexible para controlar cómo se estirará (o acortará) un widget dependiendo de sus widgets vecinos y el espacio disponible dentro del formulario. </para>
        <para
>Después de situar los widgets en una <emphasis
>disposición</emphasis
>, generalmente cada widget tiene una política de tamaño proporcional (<guilabel
>Preferida</guilabel
>). Estos widgets se redimensionarán automáticamente con las configuraciones preferidas, dependiendo de su tipo y tamaño o de la propia disposición. Por ejemplo, tres botones en una disposición horizontal se redimensionarán para ajustar su texto visible. </para>
        <para
>Para cada widget insertado en el formulario, existen disponibles configuraciones para las políticas de tamaño en el <interface
>Editor de propiedades</interface
>. Las preferencias se presentan como un grupo de propiedades llamadas <guilabel
>Política de tamaño</guilabel
>. </para>
        <!--<screenshot>
          <screeninfo
>A group of properties for defining a widget's size policy</screeninfo>
          <mediaobject>
            <imageobject>
              <imagedata fileref="img/05_04_09_size_policy_properties.png" format="PNG"/>
            </imageobject>
            <textobject>
              <phrase
>A group of properties for defining a widget's size policy</phrase>
            </textobject>
          </mediaobject>
        </screenshot
>-->
        <para
>Este grupo de propiedades contiene:</para>
        <variablelist>
          <varlistentry>
            <term
><guilabel
>Tipo de tamaño horizontal</guilabel
></term>
            <listitem>
              <para
>para definir el tamaño horizontal del widget.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term
><guilabel
>Tipo de tamaño vertical</guilabel
></term>
            <listitem>
              <para
>para definir el tamaño vertical del widget.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term
><guilabel
>Ajuste horizontal</guilabel
></term>
            <listitem>
              <para
>para definir el ajuste de la actividad del <guilabel
>Tipo de tamaño horizontal</guilabel
>. </para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term
><guilabel
>Ajuste vertical</guilabel
></term>
            <listitem>
              <para
>para definir el ajuste de la actividad del <guilabel
>Tipo de tamaño vertical</guilabel
>. </para>
            </listitem>
          </varlistentry>
        </variablelist>

        <sect4>
          <title
>Valores de las políticas de tamaño</title>
          <para
>Es posible establecer los siguientes valores en la lista desplegable para las propiedades <guilabel
>Tipo de tamaño horizontal</guilabel
> y <guilabel
>Tipo de tamaño vertical</guilabel
> visibles en el <interface
>Editor de propiedades</interface
>: </para>
          <variablelist>
            <varlistentry>
              <term
><guilabel
>Fijo</guilabel
></term>
              <listitem>
                <para
>este valor significa que el widget no puede redimensionarse automáticamente. Debería mantener el valor constante definido en tiempo de diseño (anchura o altura). </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><guilabel
>Mínimo</guilabel
></term>
              <listitem>
                <para
>este valor significa que el tamaño original del widget se establece con el valor mínimo permitido, es suficiente y no se necesita para expandir el widget, pero el widget se expandirá si se necesita. Este tipo de política puede utilizarse para forzar al widget a que se expanda a la anchura o altura completa, especialmente si establece un valor de ajuste superior a 0. </para>
                <!--<screenshot>
                  <screeninfo
>Text field and two buttons within a grid layout (Minimum horizontal size policy is set for both buttons, so these are slightly wider than needed)</screeninfo>
                  <mediaobject>
                    <imageobject>
                      <imagedata fileref="img/05_04_09_size_policy_minimum.png" format="PNG"/>
                    </imageobject>
                    <textobject>
                      <phrase
>Text field and two buttons within a grid layout (Minimum horizontal size policy is set for both buttons, so these are slightly wider than needed)</phrase>
                    </textobject>
                  </mediaobject>
                </screenshot
>-->
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><guilabel
>Máximo</guilabel
></term>
              <listitem>
                <para
>este valor significa que el tamaño original del widget se establece como el valor máximo y puede reducirse sin romper la usabilidad y legibilidad del widget si los demás widgets necesitasen más espacio. </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><guilabel
>Preferido</guilabel
></term>
              <listitem>
                <para
>este valor significa que el tamaño original del widget es el mejor y por tanto preferido. No obstante el widget puede acortarse o alargarse y permanecerá legible. </para>
                <!--<screenshot>
                  <screeninfo
>Text field and two buttons within a grid layout (Preferred horizontal size policy is set for both buttons)</screeninfo>
                  <mediaobject>
                    <imageobject>
                      <imagedata fileref="img/05_04_09_size_policy_preferred.png" format="PNG"/>
                    </imageobject>
                    <textobject>
                      <phrase
>Text field and two buttons within a grid layout (Preferred horizontal size policy is set for both buttons)</phrase>
                    </textobject>
                  </mediaobject>
                </screenshot
>-->
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><guilabel
>Expansible</guilabel
></term>
              <listitem>
                <para
>este valor significa que el tamaño original del widget es razonable pero el widget puede acortarse. Puede agrandarse también para que ocupe el máximo espacio posible. </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><guilabel
>Mínimo expansible</guilabel
></term>
              <listitem>
                <para
>este valor significa que el tamaño original del widget está permitido. Puede expandirse para que ocupe el máximo espacio posible. </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><guilabel
>Ignorado</guilabel
></term>
              <listitem>
                <para
>este valor significa que el tamaño original del widget se ignorará. El widget puede expandirse para que ocupe el máximo espacio posible pero normalmente los demás widget no lo permitirán. </para>
              </listitem>
            </varlistentry>
          </variablelist>
          <para
>Los diferentes tipos de widget tienen diferentes políticas de tamaño predeterminadas. Por ejemplo, los widgets botón tienen establecida la política de tamaño <guilabel
>Mínimo</guilabel
> (en ambas direcciones), y sin embargo los widgets de campo de texto tienen la política vertical establecida a <guilabel
>Fijo</guilabel
>. </para>
          <para
>Las políticas de tamaño más frecuentemente utilizadas son <guilabel
>Preferido</guilabel
>, <guilabel
>Mínimo</guilabel
> y <guilabel
>Máximo</guilabel
>. </para>
        </sect4>

        <sect4>
          <title
>Ajuste vertical y horizontal</title>
          <para
>Las propiedades <guilabel
>Ajuste vertical</guilabel
> y <guilabel
>ajuste horizontal</guilabel
> aceptan valores enteros mayores o iguales que 0. Estas propiedades permiten afinar el comportamiento de las políticas de tamaño. El valor predeterminado para las propiedades es 0. Valores más grandes para el ajuste significan que el widget se expandirá más que los widget que tengan un valor más pequeño en estaspropiedades. </para>
          <!--<screenshot>
            <screeninfo
>Size of button widgets affected by setting Vertical Stretch property of the second button to 1</screeninfo>
            <mediaobject>
              <imageobject>
                <imagedata fileref="img/05_04_09_size_policy_vertical_stretch.png" format="PNG"/>
              </imageobject>
              <textobject>
                <phrase
>Size of button widgets affected by setting Vertical Stretch property of the second button to 1</phrase>
              </textobject>
            </mediaobject>
          </screenshot
>-->
        </sect4>
      </sect3>
    </sect2>

    <sect2 id="setting-widgets-size-and-position-by-hand">
      <title
>Establecer el tamaño y la posición de los widgets manualmente</title>
      <para
>En el caso de que el formulario no tenga una disposición principal de posicionamiento redimensionamiento automático de sus widgets, probablemente deseará alinear su posición y tamaño de forma que el formulario tenga un aspecto limpio y sencillo de utilizar. El diseñador de formularios de &kexi; simplifica esta tarea ofreciendo los siguientes grupos de órdenes: </para>
      <itemizedlist>
        <listitem>
          <para
>Ajustar los tamaños de los widgets seleccionados. Las órdenes se encuentran disponibles en el submenú <menuchoice
><guimenu
>Formato</guimenu
><guisubmenu
>Ajustar el tamaño de los widgets</guisubmenu
></menuchoice
> de la <guilabel
>barra de menú</guilabel
> y en el submenú <menuchoice
><guisubmenu
>Ajustar el tamaño de los widgets</guisubmenu
></menuchoice
> del menú contextual. También estará disponible el botón desplegable <guibutton
>Ajustar el tamaño de los widgets</guibutton
> en la barra de herramientas. </para>
          <variablelist>
            <varlistentry>
              <term
><!--<img src="img/aofit.png" class="icon"
>--><guilabel
>Hasta que ajusten</guilabel
></term>
              <listitem>
                <para
>Los tamaños de los widgets seleccionados se podrán alterar de forma que cada widget se redimensionará de acuerdo con el tamaño preferido y con su contenido. Por ejemplo, el tamaño de la etiqueta de texto cambiará para ajustarse al su texto. La posición de los widgets no cambiará. </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><!--<img src="img/aogrid.png" class="icon"
>--><guilabel
>A la cuadrícula</guilabel
></term>
              <listitem>
                <para
>Los tamaños de los widgets seleccionados se podrán alterar de forma que la esquina de cada widget se colocará en un punto de la cuadrícula del formulario (o en otro contenedor). La posición de los widgets puede alterarse ligeramente. </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><!--<img src="img/aoshortest.png" class="icon"
>--><guilabel
>Al más bajo</guilabel
></term>
              <listitem>
                <para
>La altura de los widgets seleccionados se modificará de forma que cada uno de ellos tenga la misma altura que el más bajo. La posición de los widgets no cambiará. </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><!--<img src="img/aotallest.png" class="icon"
>--><guilabel
>Al más alto</guilabel
></term>
              <listitem>
                <para
>La altura de los widgets seleccionados se modificará de forma que cada uno de ellos tenga la misma altura que el más alto. La posición de los widgets no cambiará. </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><!--<img src="img/aonarrowest.png" class="icon"
>--><guilabel
>Al más estrecho</guilabel
></term>
              <listitem>
                <para
>La anchura de los widgets seleccionados se modificará de forma que cada uno de ellos tenga la misma anchura que el más estrecho. La posición de los widgets no cambiará. </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><!--<img src="img/aowidest.png" class="icon"
>--><guilabel
>Al más ancho</guilabel
></term>
              <listitem>
                <para
>La anchura de los widgets seleccionados se modificará de forma que cada uno de ellos tenga la misma anchura que el más ancho. La posición de los widgets no cambiará. </para>
              </listitem>
            </varlistentry>
          </variablelist>
        </listitem>
        <listitem>
          <para
>Alinear la posición de los widgets seleccionados. Las órdenes se encuentran disponibles en el submenú <menuchoice
><guimenu
>Formato</guimenu
><guisubmenu
>Alinear la posición de los widgets</guisubmenu
></menuchoice
> de la <guilabel
>barra de menú</guilabel
> y en el submenú <menuchoice
><guisubmenu
>Alinear la posición de los widgets</guisubmenu
></menuchoice
> del menú contextual. También estará disponible el botón desplegable <guibutton
>Alinear la posición de los widgets</guibutton
> en la barra de herramientas, si está disponible. </para>
          <variablelist>
            <varlistentry>
              <term
><!--<img src="img/aoleft.png" class="icon"
>--><guilabel
>A la izquierda</guilabel
></term>
              <listitem>
                <para
>La posición izquierda de todos los widgets se moverá a la posición izquierda del widget situado más cerca del borde izquierdo. </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><!--<img src="img/aoright.png" class="icon"
>--><guilabel
>A la derecha</guilabel
></term>
              <listitem>
                <para
>La posición derecha de todos los widgets se moverá a la posición derecha del widget situado más cerca del borde derecho. </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><!--<img src="img/aotop.png" class="icon"
>--><guilabel
>Arriba</guilabel
></term>
              <listitem>
                <para
>La posición superior de todos los widgets se moverá a la posición superior del widget situado más cerca del borde superior. </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><!--<img src="img/aobottom.png" class="icon"
>--><guilabel
>Abajo</guilabel
></term>
              <listitem>
                <para
>La posición inferior de todos los widgets se moverá a la posición inferior del widget situado más cerca del borde inferior. </para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term
><!--<img src="img/aopos2grid.png" class="icon"
>--><guilabel
>A la cuadrícula</guilabel
></term>
              <listitem>
                <para
>La esquina superior izquierda de todos los widgets se moverá a la posición en que estén más cerca de un punto de la cuadrícula. </para>
              </listitem>
            </varlistentry>
          </variablelist>
          <para
>Ninguna de las órdenes anteriores redimensiona los widgets.</para>
        </listitem>
      </itemizedlist>
      <para
>También existen otras órdenes disponibles: <guimenuitem
>Traer al widget al primer plano</guimenuitem
> (es decir, sobre los demás widgets) y <guimenuitem
>Enviar al widget hacia atrás</guimenuitem
> (es decir, debajo de todos los demás widgets). Éstas dos órdenes se utilizan con poca frecuencia, ya que no es común situar un widget sobre otro (con la excepción de los widget contenedores que contienen otros widgets dentro). Observe, que pulsar sobre un widget con el botón del ratón es suficiente para traerlo al primer plano. </para>
    </sect2>

    <sect2 id="setting-the-tab-order">
      <title
>Establecer el orden de tabulación</title>
      <para
>El foco del widget determina la actividad que del widget que se podrá realizar con el teclado. El foco está relacionado con los widgets que se muestran en la vista de datos del formulario. Solo un widget de un formulario puede tener el foco. El uso más frecuente del foco es introducir texto (cuando un campo de texto está activo, es decir, está enfocado). Otro ejemplo es un widget botón (cuando está enfocado es posible «pulsarlo» y utilizar las teclas <keycombo action="press"
>&Enter;</keycombo
> o <keycombo action="press"
><keycap
>Espacio</keycap
></keycombo
> en lugar de un botón del ratón. </para>
      <para
>Existen varias formas de hacer que un widget se vuelva activo (mover el foco al widget): pulsar con un botón del ratón, girar la rueda del ratón sobre el widget o usar la tecla <keycombo action="press"
>&Tab;</keycombo
>. El último método se usa con frecuencia debido a su velocidad y comodidad para los usuarios. La disponibilidad de los métodos de enfocado está controlado por la propiedad <guilabel
>Política del foco</guilabel
> de un determinado widget. </para>
      <para
>Existe una relación entre enfocar (activar) widgets utilizando la tecla <keycombo action="press"
>&Tab;</keycombo
> y las preferencias del orden de tabulación de un formulario. Después de pulsar la tecla <keycombo action="press"
>&Tab;</keycombo
>, se debería enfocar el siguiente widget, por tanto, el formulario debería conocer el orden de tabulación. </para>
      <para
>Para alterar el orden de la tabla para un componente:</para>
      <procedure>
        <step>
          <para
>Cambie a la vista de diseño del formulario.</para>
        </step>
        <step>
          <para
>Ejecute la orden <menuchoice
><guimenu
>Editar</guimenu
><guimenuitem
>Editar orden de tabuladores</guimenuitem
></menuchoice
>. Aparecerá la configuración de <guilabel
>Editar orden de tabuladores</guilabel
> para este formulario. </para>
          <!--<screenshot>
            <screeninfo
>A window for editing tab order for a form</screeninfo>
            <mediaobject>
              <imageobject>
                <imagedata fileref="img/05_04_11_tab_stop_dialog.png" format="PNG"/>
              </imageobject>
              <textobject>
                <phrase
>A window for editing tab order for a form</phrase>
              </textobject>
            </mediaobject>
          </screenshot
>-->
          <para
>La ventana contiene una lista con dos columnas: la primera columna muestra los nombres de los widgets y la segunda el tipo de los mismos. Para que sea posible el reconocimiento del significado de los nombre y los tipos para el usuario, también se muestran los iconos relacionados con los tipos. La lista contiene solo los widgets para los que es posible determinar la política de foco para la tecla &Tab;. La ventana permite cambiar el orden de los tabuladores o establecer dicho orden automáticamente. </para>
        </step>
        <step>
          <para
>Para cambiar el orden de tabulación, también:</para>
          <itemizedlist>
            <listitem>
              <para
>Pulse el nombre de widget seleccionado en la lista de widgets y arrástrelo a la posición deseada (arriba o abajo) utilizando el ratón. </para>
            </listitem>
            <listitem>
              <para
>Pulse el nombre de widget seleccionado en la lista de widgets y utilice los botones <guibutton
>Subir</guibutton
> o <guibutton
>Bajar</guibutton
>, para mover los widgets a la posición deseada. </para>
            </listitem>
            <listitem>
              <para
>Marque la casilla <guilabel
>Gestionar automáticamente los tabuladores</guilabel
> para establecer el orden de los tabuladores de forma automática para el formulario. Si se ha activado esta opción, cualquier cambio hecho en la lista de widgets de forma manual, no se tendrá en cuenta -&kexi; gestiorará el mismo los tabuladores-. El ordenado automático significa que se enfocará en primer lugar el widget situado más arriba y a la izquierda (o más arriba y a la derecha, si su sistema operativo utiliza la disposición de derecha a izquierda), y el orden va de izquierda a derecha (o de derecha a izquierda en su caso) y de arriba hacia abajo. </para>
              <!--<screenshot>
                <screeninfo
>Automatic tab order for a form</screeninfo>
                <mediaobject>
                  <imageobject>
                    <imagedata fileref="img/05_04_11_auto_tab_stop.png" format="PNG"/>
                  </imageobject>
                  <textobject>
                    <phrase
>Automatic tab order for a form</phrase>
                  </textobject>
                </mediaobject>
              </screenshot
>-->
            </listitem>
          </itemizedlist>
        </step>
        <step>
          <para
>Pulse el botón <guibutton
>Aceptar</guibutton
> para aceptar los cambios o el botón Cancelar para descartar los cambios. </para>
        </step>
      </procedure>
    </sect2>
  </sect1>
