Cuadros de diálogo

Los cuadros de diálogo dedicados al idioma del usuario sirven para definir su propia parte frontal para un programa de idioma del usuario. Las siguientes secciones describen en detalle los cuadros de diálogo de idioma del usuario:

Cuadros de diálogo predefinidos

Los cuadros de diálogo predefinidos implementan los cuadros de diálogo estándar típicos que suelen usarse para seleccionar nombres de archivo o para emitir mensajes de error.

Consulte Objetos del cuadro de diálogo para obtener información sobre cómo definir los cuadros de diálogo de usuario complejos que prefiera.

Función cuadro de diálogo de un directorio dlgDirectory()

Función

Muestra el cuadro de diálogo de un directorio.

Sintaxis

string dlgDirectory(string Title[, string Start])

Devuelve

La función dlgDirectory devuelve el nombre completo de la ruta del directorio seleccionado. Si el usuario ha cancelado el cuadro de diálogo, el resultado será una cadena vacía.

Ver también dlgFileOpen

La función dlgDirectory muestra el cuadro de diálogo de un directorio en el que el usuario puede seleccionar un directorio. El Título será el título del cuadro de diálogo.

Si Inicio no está vacío, se utilizará como punto inicial para el dlgDirectory.

Ejemplo

string dirName;
dirName = dlgDirectory("Select a directory", "");

dlgFileOpen(), dlgFileSave()

Función

Muestra el cuadro de diálogo de un archivo.

Sintaxis

string dlgFileOpen(string Title[, string Start[, string Filter]])
string dlgFileSave(string Title[, string Start[, string Filter]])

Devuelve

Las funciones dlgFileOpen y dlgFileSave devuelven el nombre completo de la ruta del archivo seleccionado. Si el usuario ha cancelado el cuadro de diálogo, el resultado será una cadena vacía.

Ver también dlgDirectory

Las funciones dlgFileOpen y dlgFileSave muestran el cuadro de diálogo de un archivo en el que el usuario puede seleccionar un archivo. El Título será el título del cuadro de diálogo.

Si Inicio no está vacío, se utilizará como punto inicial para el cuadro de diálogo del archivo. De lo contrario, se utilizará el directorio actual.

Solo se mostrarán los archivos que coincidan con el filtro. Si Filtro está vacío, se mostrarán todos los archivos.

El filtro puede ser un comodín simple (como "*.brd"), una lista de comodines (como "*.bmp *.jpg") o incluso puede contener texto descriptivo, como en "Archivos de mapa de bits (*.bmp)". Si el cuadro combinado "Tipo de archivo" del cuadro de diálogo del archivo contiene varias entradas, deben separarse con un punto y coma doble, como en "Archivos de mapa de bits (*.bmp);; Otras imágenes (*.jpg *.png)".

Ejemplo

string fileName;
fileName = dlgFileOpen("Select a file", "", "*.brd");

dlgMessageBox()

Función

Muestra un cuadro de mensaje.

Sintaxis

int dlgMessageBox(string Message[, button_list])

Devuelve

La función cuadro de diálogo para un mensaje dlgMessageBox devuelve el índice del botón que el usuario ha seleccionado. El primer botón de la lista button_list tiene el índice 0.

Ver también status()

La función dlgMessageBox muestra el mensaje especificado en un cuadro de diálogo modal y espera hasta que el usuario seleccione uno de los botones definidos en la lista button_list.

Si el Mensaje contiene etiquetas HTML, los caracteres '<', '>' y '&' deben especificarse como &lt;, &gt; y &amp;, respectivamente, si se van a mostrar como tales.

La button_list es una lista opcional de cadenas separadas por comas que define el conjunto de botones que se mostrarán en la parte inferior del cuadro de mensaje. Se puede definir un máximo de tres botones. Si no se especifica ninguna button_list, se establece por defecto "Aceptar".

El primer botón de la lista button_list se convertirá en el botón por defecto (que se seleccionará si el usuario pulsa INTRO) y el último botón de la lista se convertirá en el botón "Cancelar", que se selecciona si el usuario pulsa ESCape o cierra el cuadro de mensaje. Se puede definir como botón predeterminado otro diferente iniciando su nombre con el signo "+", y también que otro botón sea el botón Cancelar si comienza su nombre con el signo "-". Para que el texto de un botón empiece con un '+' o '-' real, debe estar entre secuencias de escape.

Si el texto de un botón contiene un signo "&", el carácter que sigue a este signo se convertirá en una tecla de acceso directo y, cuando el usuario pulse la tecla correspondiente, se seleccionará ese botón. Para que el texto tenga un carácter "&" real, debe estar entre secuencias de escape.

El cuadro de mensaje puede tener un icono como primer carácter:

   ';' - for an Information
   '!' - for a Warning
   ':' - for an Error

Sin embargo, si el mensaje comienza con uno de estos caracteres, debe estar entre secuencias de escape.

En Mac OS X, solo el carácter ':' mostrará un icono. Todos los demás se ignorarán.

Ejemplo

if (dlgMessageBox("!Are you sure?", "&Yes", "&No") == 0) {
   // let's do it!
   }

Los cuadros de diálogo para el idioma del usuario se crean a partir de los siguientes objetos:

dlgCell un contexto para la celda de la rejilla
dlgCheckBox una casilla de verificación
dlgComboBox un campo de selección con cuadro combinado
dlgDialog el contenedor básico de cualquier cuadro de diálogo
dlgGridLayout un contexto de diseño basado en la rejilla
dlgGroup un campo grupal
dlgHBoxLayout un contexto de presentación con cuadro horizontal
dlgIntEdit un campo de entrada entero
dlgLabel una etiqueta de texto
dlgListBox un cuadro de lista
dlgListView una vista de lista
dlgPushButton un botón de pulsar
dlgRadioButton un botón de opción
dlgRealEdit un campo de entrada real
dlgSpacing un objeto de espaciado en la presentación
dlgSpinBox un campo de selección con cuadro de número
dlgStretch un objeto que estira la presentación
dlgStringEdit un campo de entrada para cadena
dlgTabPage la página de una ficha
dlgTabWidget un contenedor de la página de ficha
dlgTextEdit un campo de entrada de texto
dlgTextView un campo de visor de texto
dlgVBoxLayout un contexto de presentación con cuadro vertical

dlgCell

Función

Define la ubicación de una celda dentro del contexto de una presentación en rejilla.

Sintaxis

dlgCell(int row, int column[, int row2, int column2]) statement

Ver también dlgGridLayout, dlgHBoxLayout, dlgVBoxLayout, Información de presentación, Un ejemplo completo

La sentencia dlgCell define la ubicación de una celda en un contexto de una presentación en la rejilla.

Los índices de fila y columna comienzan en 0, por lo que la celda superior izquierda tiene el índice (0, 0).

Con dos parámetros, el objeto del cuadro de diálogo definido por sentencias se colocará en las direcciones únicas de las celdas por fila y columna. Con cuatro parámetros, el objeto de cuadro de diálogo se extenderá por todas las celdas, desde la fila/columna hasta la fila2/columna2.

Por defecto, un dlgCell contiene un dlgHBoxLayout, por lo que si la celda contiene más de un objeto de diálogo, se colocarán uno junto al otro horizontalmente.

Ejemplo

string Text;
dlgGridLayout {
  dlgCell(0, 0) dlgLabel("Cell 0,0");
  dlgCell(1, 2, 4, 7) dlgTextEdit(Text);
  }

dlgCheckBox

Función

Define una casilla de verificación.

Sintaxis

dlgCheckBox(string Text, int &Checked) [ statement ]

Ver también dlgRadioButton, dlgGroup, Información de presentación, Un ejemplo completo

La sentencia dlgCheckBox define una casilla de verificación con el texto especificado.

Si el texto contiene un signo "&", el carácter que sigue al signo "ampersand" se convertirá en una tecla de acceso directo y, cuando el usuario pulse Alt+tecla de acceso directo, la casilla de verificación se activará. Para que el texto tenga un carácter "&" real, debe estar entre secuencias de escape.

dlgCheckBox se utiliza principalmente en un dlgGroup, pero también se puede utilizar de otras formas. Todas las casillas de verificación del mismo cuadro de diálogo deben tener distintas variables marcadas.

Si el usuario marca un dlgCheckBox, la variable marcada asociada se establece en 1; de lo contrario, se establece en 0. El valor inicial de marcado define si una casilla de verificación está inicialmente activada. Si el marcado no es igual a 0, la casilla de verificación se marca desde el principio.

La sentencia opcional se ejecuta cada vez que se activa o desactiva dlgCheckBox.

Ejemplo

int mirror = 0;
int rotate = 1;
int flip   = 0;
dlgGroup("Orientation") {
  dlgCheckBox("&Mirror", mirror);
  dlgCheckBox("&Rotate", rotate);
  dlgCheckBox("&Flip", flip);
  }

dlgComboBox

Función

Define un campo de selección con cuadro combinado.

Sintaxis

dlgComboBox(string array[], int &Selected) [ sentencia ]

Ver también dlgListBox, dlgLabel, Información de presentación, Un ejemplo completo

La sentencia dlgComboBox define un campo de selección con cuadro combinado que contiene la matriz especificada.

Seleccionado refleja el índice de la entrada del cuadro combinado seleccionado. La primera entrada tiene índice 0.

Cada elemento de la matriz define el contenido de una entrada en el cuadro combinado. Ninguna de las cadenas de la matriz puede estar vacía (si hay una cadena vacía, se eliminarán todas las cadenas posteriores y las que van incluidas).

La sentencia opcional se ejecuta siempre que cambie la selección en dlgComboBox. Antes de ejecutar la sentencia, todas las variables que se han utilizado con objetos del cuadro de diálogo se actualizan a sus valores actuales y los cambios de estas variables dentro de la sentencia se reflejan en el cuadro de diálogo cuando esta vuelve.

Si el valor inicial de Seleccionado está fuera del rango de los índices de la matriz, se establece en 0.

Ejemplo

string Colors[] = { "red", "green", "blue", "yellow" };
int Selected = 2; // initially selects "blue"
dlgComboBox(Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);

dlgDialog

Función

Ejecuta un cuadro de diálogo de idioma del usuario.

Sintaxis

int dlgDialog(string Title) block ;

Devuelve

La función dlgDialog devuelve un valor entero que puede tener un significado definido por el usuario mediante el inicio de una función dlgAccept().

Si el cuadro de diálogo simplemente se cierra, el valor devuelto será -1.

Ver también dlgGridLayout, dlgHBoxLayout, dlgVBoxLayout, dlgAccept, dlgReset, dlgReject, A Complete Example

La función dlgDialog ejecuta el cuadro de diálogo definido por el bloque. Este es el único objeto de cuadro de diálogo que en realidad es una función integrada del idioma del usuario. Por lo tanto, se puede utilizar en cualquier lugar donde se permita iniciar la función.

Normalmente, el bloque solo contiene otros objetos de cuadro de diálogo, pero también es posible utilizar otras sentencias de idioma del usuario, por ejemplo para añadir objetos de forma condicional al cuadro de diálogo (consulte el segundo ejemplo a continuación).

Por defecto, un dlgDialog contiene un dlgVBoxLayout, por lo que un cuadro de diálogo sencillo no tiene que encargarse de la presentación.

Un dlgDialog debe contener en algún momento el inicio de la función dlgAccept() para permitir al usuario cerrar el cuadro de diálogo y aceptar su contenido.

Si solo necesita un cuadro de mensaje o un cuadro de diálogo de archivo sencillo, puede utilizar uno de los Cuadros de diálogo predefinidos.

Ejemplos

int Result = dlgDialog("Hello") {
  dlgLabel("Hello world");
  dlgPushButton("+OK") dlgAccept();
  };
int haveButton = 1;
dlgDialog("Test") {
  dlgLabel("Start");
  if (haveButton)
     dlgPushButton("Here") dlgAccept();
  };

dlgGridLayout

Función

Abre un contexto de presentación en la rejilla.

Sintaxis

dlgGridLayout statement

Ver también dlgCell, dlgHBoxLayout, dlgVBoxLayout, Información de presentación, Un ejemplo completo

La sentencia dlgGridLayout abre un contexto de distribución de la rejilla.

El único objeto de diálogo que se puede utilizar directamente en la sentencia es dlgCell, que define la ubicación de un determinado objeto de cuadro de diálogo en la distribución de la rejilla.

Los índices de fila y columna comienzan en 0, por lo que la celda superior izquierda tiene el índice (0, 0).

El número de filas y columnas se extiende automáticamente según la ubicación de los objetos del cuadro diálogo que estén definidos en el contexto de la presentación en rejilla, por lo que no es necesario definir explícitamente el número de filas y columnas.

Ejemplo

dlgGridLayout {
  dlgCell(0, 0) dlgLabel("Row 0/Col 0");
  dlgCell(1, 0) dlgLabel("Row 1/Col 0");
  dlgCell(0, 1) dlgLabel("Row 0/Col 1");
  dlgCell(1, 1) dlgLabel("Row 1/Col 1");
  }

dlgGroup

Función

Define el campo de un grupo.

Sintaxis

Sentencia dlgGroup(título de la cadena)

Ver también dlgCheckBox, dlgRadioButton, Información de presentación, Un ejemplo completo

La sentencia dlgGroup define un grupo con el título especificado.

Por defecto, un dlgGroup contiene un dlgVBoxLayout, por lo que un grupo sencillo no tiene que encargarse de la presentación.

dlgGroup se utiliza principalmente para albergar un conjunto de botones de opción o casillas de verificación, pero puede contener cualquier otro objeto en su sentencia. Los botones de opción de un dlgGroup se numeran comenzando por 0.

Ejemplo

int align = 1;
dlgGroup("Alignment") {
  dlgRadioButton("&Top", align);
  dlgRadioButton("&Center", align);
  dlgRadioButton("&Bottom", align);
  }

dlgHBoxLayout

Función

Abre el contexto de presentación con cuadro horizontal.

Sintaxis

dlgHBoxLayout statement

Ver también dlgGridLayout, dlgVBoxLayout, Información de presentación, Un ejemplo completo

La sentencia dlgHBoxLayout abre un contexto de presentación con cuadro horizontal para la sentencia dada.

Ejemplo

dlgHBoxLayout {
  dlgLabel("Box 1");
  dlgLabel("Box 2");
  dlgLabel("Box 3");
  }

dlgIntEdit

Función

Define un campo para la entrada de números enteros.

Sintaxis

dlgIntEdit(int &Value, int Min, int Max)

Ver también dlgRealEdit, dlgStringEdit, dlgLabel, Información de presentación, Un ejemplo completo

La sentencia dlgIntE*dit define un campo de entrada de números enteros con el valor especificado.

Si el valor está fuera del rango definido por Mín. y Máx. desde el principio, se limitará a estos valores.

Ejemplo

int Value = 42;
dlgHBoxLayout {
  dlgLabel("Enter a &Number between 0 and 99");
  dlgIntEdit(Value, 0, 99);
  }

dlgLabel

Función

Define una etiqueta de texto.

Sintaxis

dlgLabel(string Text [, int Update])

Ver también Información de presentación, Un ejemplo completo, dlgRedisplay()

La sentencia dlgLabel define una etiqueta con el texto especificado.

El texto puede ser literal de una cadena, como en "Hello", o una variable de la cadena.

Si el texto contiene etiquetas HTML, los caracteres '<', '>' y '&' deben especificarse como "&lt;", "&gt;" y "&amp;", respectivamente, si se van a mostrar como tales.

Los hipervínculos externos del texto se abrirán con el programa de la aplicación adecuado.

Si el parámetro Actualizar no es 0 y el texto es una variable de la cadena, su contenido se puede modificar en la sentencia de, por ejemplo, un dlgPushButton y la etiqueta se actualizará automáticamente. Esto, por supuesto, sólo es útil si el texto es una variable de la cadena específica (no, por ejemplo, la variable del bucle de una sentencia).

Si el texto contiene '&' y el objeto que sigue a la etiqueta pasa el foco al teclado, el carácter que sigue al símbolo se convertirá en una tecla de acceso directo y, cuando el usuario pulse Alt+tecla de acceso directo, el foco se dirigirá al objeto que se definió inmediatamente después de dlgLabel. Para que el texto tenga un carácter "&" real, debe estar entre secuencias de escape.

Ejemplo

string OS = "Windows";
dlgHBoxLayout {
  dlgLabel(OS, 1);
  dlgPushButton("&Change OS") { OS = "Linux"; }
  }

dlgListBox

Función

Define un campo de selección con cuadro de lista.

Sintaxis

dlgListBox(string array[], int &Selected) [ statement ]

Ver también dlgComboBox, dlgListView, dlgSelectionChanged, dlgLabel, Información de presentación, Un ejemplo completo

La sentencia dlgListBox define un campo de selección con cuadro de lista que contiene la matriz especificada.

Seleccionado refleja el índice de la entrada del cuadro de lista seleccionado. La primera entrada tiene índice 0.

Cada elemento de la matriz define el contenido de una línea en el cuadro de lista. Ninguna de las cadenas de la matriz puede estar vacía (si hay una cadena vacía, se eliminarán todas las cadenas posteriores y las que van incluidas).

La sentencia opcional se ejecuta siempre que el usuario haga doble clic en una entrada de dlgListBox (consulte dlgSelectionChanged para obtener información sobre cómo hacer que se inicie la sentencia cuando solo cambie la selección de la lista). Antes de ejecutar la sentencia, todas las variables que se han utilizado con objetos del cuadro de diálogo se actualizan a sus valores actuales y los cambios de estas variables dentro de la sentencia se reflejan en el cuadro de diálogo cuando esta vuelve.

Si el valor inicial de Seleccionado está fuera del rango de los índices de la matriz, no se seleccionará ninguna entrada.

Ejemplo

string Colors[] = { "red", "green", "blue", "yellow" };
int Selected = 2; // initially selects "blue"
dlgListBox(Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);

dlgListView

Función

Define un campo de selección con vista de lista en varias columnas.

Sintaxis

dlgListView(encabezamientos de la cadena, matriz de la cadena[], ent &Seleccionado[, ent &Orden]) [ sentencia ]

Ver también dlgListBox, dlgSelectionChanged, dlgLabel, Información de presentación, Un ejemplo completo

La sentencia dlgListView define un campo de selección con vista de lista en varias columnas que incluye el contenido de la matriz especificada.

Los encabezados están en la lista separada por tabuladores para encabezados de columnas.

Seleccionado refleja el índice de la entrada de la vista de lista seleccionada en la matriz (la secuencia en la que se muestran las entradas puede ser diferente, ya que el contenido de una dlgListView se puede ordenar por las distintas columnas). La primera entrada tiene índice 0.

Si no se selecciona inicialmente ninguna entrada concreta, Seleccionado se debe iniciar como -1. Si se establece en -2, el primer elemento según la columna del orden actual se convierte en el actual. Si no se ha seleccionado ninguna entrada de la vista, se devuelve -1.

Ordenar define la columna que se debe utilizar para ordenar la vista de lista. La columna situada más a la izquierda tiene el número 1. El signo de este parámetro define la dirección en la que se ordenará (los valores positivos se ordenan de forma ascendente). Si el valor de ordenar es 0 o está fuera del número válido de columnas, no se establecerá ningún orden. El valor que se devuelve de Ordenar refleja la columna y el modo de ordenación seleccionados por el usuario haciendo clic en los encabezados de las columnas de la lista. Por defecto, dlgListView ordena por la primera columna, en orden ascendente.

Cada elemento de la matriz define el contenido de una línea en la vista de lista y debe contener valores separados por tabulaciones. Si hay menos valores en un elemento de la matriz que entradas en la cadena Encabezados, el resto de los campos estarán vacíos. Si hay más valores en un elemento de la matriz que entradas en la cadena Encabezados, los elementos que sobran se dejarán de forma silenciosa. Ninguna de las cadenas de la matriz puede estar vacía (si hay una cadena vacía, se eliminarán todas las cadenas posteriores y las que van incluidas).

La entrada de una lista que contenga avances de línea ('\n') se mostrará en varias líneas como corresponda.

La sentencia opcional se ejecuta siempre que el usuario haga doble clic en una entrada de dlgListView (consulte dlgSelectionChanged para obtener información sobre cómo hacer que se inicie la sentencia cuando solo cambie la selección de la lista). Antes de ejecutar la sentencia, todas las variables que se han utilizado con objetos del cuadro de diálogo se actualizan a sus valores actuales y los cambios de estas variables dentro de la sentencia se reflejan en el cuadro de diálogo cuando esta vuelve.

Si el valor inicial de Seleccionado está fuera del rango de los índices de la matriz, no se seleccionará ninguna entrada.

Si Encabezamientos es una cadena vacía, el primer elemento de la matriz se utiliza como cadena para el encabezado. Por lo tanto, el índice de la primera entrada es 1.

El contenido de una dlgListView se puede ordenar por cualquier columna haciendo clic en el encabezado de esa columna. Las columnas también se pueden intercambiar haciendo clic y arrastrando el encabezado de la columna. Tenga en cuenta que ninguno de estos cambios tendrá ningún efecto en el contenido de la matriz. Si el contenido se ordena de forma alfanumérica, se puede utilizar una matriz con cadena numérica[].

Ejemplo

string Colors[] = { "red\tThe color RED", "green\tThe color GREEN", "blue\tThe color BLUE" };
int Selected = 0; // initially selects "red"
dlgListView("Name\tDescription", Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);

dlgPushButton

Función

Define un botón de pulsar.

Sintaxis

dlgPushButton(string Text) statement

Véase también Información de presentación, Funciones del cuadro de diálogo, Un ejemplo completo

La sentencia dlgPushButton define un botón de pulsar con el texto especificado.

Si el texto contiene un signo "&", el carácter que sigue al signo "ampersand" se convertirá en una tecla de acceso directo y, cuando el usuario pulse Alt+tecla de acceso directo, se seleccionará el botón. Para que el texto tenga un carácter "&" real, debe estar entre secuencias de escape.

Si el texto comienza con un carácter '+', este botón se convertirá en el botón predeterminado, que se seleccionará si el usuario pulsa INTRO. Si el texto comienza con un carácter '-', este botón se convertirá en el botón de cancelar, que se seleccionará si el usuario cierra el cuadro de diálogo.

ATENCIÓN: Compruebe que la sentencia de un botón de cancelación marcado contenga el inicio de dlgReject(). De lo contrario, es posible que el usuario no pueda cerrar el cuadro de diálogo.

Para que un carácter '+' o '-' real sea el primer carácter del texto, debe estar entre secuencias de escape.

Si el usuario selecciona un dlgPushButton, se ejecuta la sentencia especificada. Antes de ejecutar la sentencia, todas las variables que se han utilizado con objetos del cuadro de diálogo se actualizan a sus valores actuales y los cambios de estas variables dentro de la sentencia se reflejan en el cuadro de diálogo cuando esta vuelve.

Ejemplo

int defaultWidth = 10;
int defaultHeight = 20;
int width = 5;
int height = 7;
dlgPushButton("&Reset defaults") {
  width = defaultWidth;
  height = defaultHeight;
  }
dlgPushButton("+&Accept") dlgAccept();
dlgPushButton("-Cancel") { if (dlgMessageBox("Are you sure?", "Yes", "No") == 0) dlgReject(); }

dlgRadioButton

Función

Define un botón de opción.

Sintaxis

dlgRadioButton(string Text, int &Selected) [ statement ]

Ver también dlgCheckBox, dlgGroup, Información de presentación, Un ejemplo completo

La sentencia dlgRadioButton define un botón de opción con el texto especificado.

Si el texto contiene un signo "&", el carácter que sigue al signo "ampersand" se convertirá en una tecla de acceso directo y, cuando el usuario pulse Alt+tecla de acceso directo, se seleccionará el botón. Para que el texto tenga un carácter "&" real, debe estar entre secuencias de escape.

dlgRadioButton solo se puede utilizar en un dlgGroup. Todos los botones de opción del mismo grupo deben utilizar la misma variable en la opción Seleccionado.

Si el usuario selecciona un dlgRadioButton, el índice de ese botón del dlgGroup se almacena en la variable Seleccionado. El valor inicial de Seleccionado define qué botón de opción se selecciona al principio. Si Seleccionado está fuera del rango válido de este grupo, no se seleccionará ningún botón de opción. Para obtener la selección correcta de botones de opción, Selected debe definirse antes del primer dlgRadioButton y no debe modificarse mientras se añaden botones de opción posteriores. De lo contrario, no se definirá qué botón de opción (si existe alguno) se selecciona.

La sentencia opcional se ejecuta cada vez que se seleccione dlgRadioButton.

Ejemplo

int align = 1;
dlgGroup("Alignment") {
  dlgRadioButton("&Top", align);
  dlgRadioButton("&Center", align);
  dlgRadioButton("&Bottom", align);
  }

dlgRealEdit

Función

Define un campo de entrada real.

Sintaxis

dlgRealEdit(real &Value, real Min, real Max)

Ver también dlgIntEdit, dlgStringEdit, dlgLabel, Información de presentación, Un ejemplo completo

La sentencia dlgRealEdit define un campo de entrada real con el valor especificado.

Si Valor está inicialmente fuera del rango definido por Mín. y Máx., se limitará a estos valores.

Ejemplo

real Value = 1.4142;
dlgHBoxLayout {
  dlgLabel("Enter a &Number between 0 and 99");
  dlgRealEdit(Value, 0.0, 99.0);
  }

dlgSpacing

Función

Define el espacio adicional en el contexto de la presentación de un cuadro.

Sintaxis

dlgSpacing(int Size)

Ver también dlgHBoxLayout, dlgVBoxLayout, dlgStretch, Información de presentación, Un ejemplo completo

La sentencia dlgSpacing define el espacio adicional en el contexto de la presentación de un cuadro vertical u horizontal.

El tamaño define el número de píxeles del espacio adicional.

Ejemplo

dlgVBoxLayout {
  dlgLabel("Label 1");
  dlgSpacing(40);
  dlgLabel("Label 2");
  }

dlgSpinBox

Función

Define un campo de selección con cuadro numérico.

Sintaxis

dlgSpinBox(int &Value, int Min, int Max)

Ver también dlgIntEdit, dlgLabel, Información de presentación, Un ejemplo completo

La sentencia dlgSpinBox define un campo de entrada con cuadro numérico con el valor especificado.

Si Valor está inicialmente fuera del rango definido por Mín. y Máx., se limitará a estos valores.

Ejemplo

int Value = 42;
dlgHBoxLayout {
  dlgLabel("&Select value");
  dlgSpinBox(Value, 0, 99);
  }

dlgStretch

Función

Define un espacio vacío y extensible en el contexto de la presentación de un cuadro.

Sintaxis

dlgStretch(int Factor)

Ver también dlgHBoxLayout, dlgVBoxLayout, dlgSpacing, Información de presentación, Un ejemplo completo

La sentencia dlgStretch define el espacio extensible vacío en el contexto de la presentación de un cuadro vertical u horizontal.

Factor define el factor de la extensión del espacio.

Ejemplo

dlgHBoxLayout {
  dlgStretch(1);
  dlgPushButton("+OK")    { dlgAccept(); };
  dlgPushButton("Cancel") { dlgReject(); };
  }

dlgStringEdit

Función

Define un campo de entrada para la cadena.

Sintaxis

dlgStringEdit(string &Text[, string &History[][, int Size]])

Ver también dlgRealEdit, dlgIntEdit, dlgTextEdit, dlgLabel, Información de presentación, Un ejemplo completo

La sentencia dlgStringEdit define el campo de entrada de texto de una línea con el texto especificado.

Si se da el Historial, las cadenas introducidas por el usuario a lo largo del tiempo se almacenan en esa matriz de cadenas. El campo de entrada tiene un botón que permite al usuario seleccionar cadenas introducidas anteriormente. Si se da un Tamaño que sea mayor que cero, como mucho se almacenará en la matriz ese número de cadenas. Si el Historial contiene datos cuando se abre el cuadro de diálogo, estos se utilizarán para iniciar el historial. La entrada de usuario que se haya introducido más recientemente se almacena en el índice 0. Ninguna de las cadenas del Historial puede estar vacía. Si hay una cadena vacía, se eliminarán todas las cadenas posteriores y las que van incluidas.

Ejemplo

string Name = "Linus";
dlgHBoxLayout {
  dlgLabel("Enter &Name");
  dlgStringEdit(Name);
  }

dlgTabPage

Función

Define la página de una ficha.

Sintaxis

dlgTabPage(string Title) statement

Ver también dlgTabWidget, Información de presentación, Un ejemplo completo

La sentencia dlgTabPage define la página de una ficha con el título especificado que contenga la sentencia especificada.

Si el título contiene un signo "&", el carácter que sigue al signo "ampersand" se convertirá en una tecla de acceso directo y, cuando el usuario pulse Alt+tecla de acceso directo, se abrirá esta página de la ficha. Para que el texto tenga un carácter "&" real, debe estar entre secuencias de escape.

Las páginas de fichas solo se pueden utilizar en un dlgTabWidget.

Por defecto, un dlgTabPage contiene un dlgVBoxLayout, por lo que la página de una ficha sencilla no tiene que encargarse de la presentación.

Ejemplo

dlgTabWidget {
  dlgTabPage("Tab &1") {
    dlgLabel("This is page 1");
    }
  dlgTabPage("Tab &2") {
    dlgLabel("This is page 2");
    }
  }

dlgTabWidget

Función

Define un contenedor para las páginas de fichas.

Sintaxis

dlgTabWidget { tabpages }
dlgTabWidget(int &Index) { tabpages }

Ver también dlgTabPage, Información de presentación, Un ejemplo completo

dlgTabWidget define un contenedor para un conjunto de páginas de fichas.

tabpages debe ser una secuencia de uno o más objetos de dlgTabPage. No debe haber otros objetos de cuadro de diálogo en esta secuencia.

El Índice define qué ficha se debe seleccionar inicialmente. Si esta selección cambia, la variable índice se determina según lo indicado. La primera página tiene índice 0 (independientemente de su título).

Ejemplos

dlgTabWidget {
  dlgTabPage("Tab &1") {
    dlgLabel("This is page 1");
    }
  dlgTabPage("Tab &2") {
    dlgLabel("This is page 2");
    }
  }
dlgDialog("test")
{
  int TabNr = 0;
  int CheckBoxValue[];
  dlgTabWidget(TabNr) {
     for (int i = 0; i <= 9; i++) {
         string s;
         sprintf(s, "%d", i);
         dlgTabPage("Tab " + s) {
            dlgLabel("This is page " + s);
            dlgCheckBox(s, CheckBoxValue[i]) {
               string Msg;
               sprintf(Msg, "Value #%d: %d\n", TabNr, CheckBoxValue[TabNr]);
               dlgMessageBox(Msg);
               }
            }
         }
     }
};

dlgTextEdit

Función

Define el campo de una entrada de texto de líneas múltiples.

Sintaxis

dlgTextEdit(string &Text)

Ver también dlgStringEdit, dlgTextView, dlgLabel, Información de presentación, Un ejemplo completo

La sentencia dlgTextEdit define el campo de entrada de texto de líneas múltiples con el texto especificado.

Las líneas del texto deben estar delimitadas por un carácter de nueva línea ('\n'). Se eliminarán todos los caracteres de espacio en blanco al final de las líneas que contenga el texto y no devolverá espacios en blanco al final de las líneas. Las líneas vacías al final del texto se eliminarán por completo.

Ejemplo

string Text = "This is some text.\nLine 2\nLine 3";
dlgVBoxLayout {
  dlgLabel("&Edit the text");
  dlgTextEdit(Text);
  }

dlgTextView

Función

Define el campo de un visor de texto de líneas múltiples.

Sintaxis

Sentencia dlgTextView(string Text) dlgTextView(string Text, string &Link)

Ver también dlgTextEdit, dlgLabel, Información de presentación, Un ejemplo completo

La sentencia dlgTextView define el campo del visor de texto de líneas múltiples con el texto especificado.

El texto puede contener etiquetas HTML.

Los hipervínculos externos del texto se abrirán con el programa de la aplicación adecuado.

Si se especifica un vínculo y el texto contiene hipervínculos, la sentencia se ejecutará cada vez que el usuario haga clic en un hipervínculo, con el valor del vínculo establecido en cualquier definición de la etiqueta <a href=...> como valor de href. Si después de ejecutar la sentencia la variable del vínculo no está vacía, se tratará de forma predeterminada como todos los hipervínculos. Esto también sucedería si el vínculo contiene algo de texto antes de abrir dlgTextView, lo que permitía desplazarse a una posición determinada al principio. Si se especifica un vínculo, no se abrirán los hipervínculos externos.

Ejemplo

cadena Text = "Aquí hay texto.\nLine 2\nLine 3"; dlgVBoxLayout { dlgLabel("&Ver el texto"); dlgTextView(Text); }

dlgVBoxLayout

Función

Abre un contexto de presentación con cuadro vertical.

Sintaxis

dlgVBoxLayout statement

Ver también dlgGridLayout, dlgHBoxLayout, Información de presentación, Un ejemplo completo

La sentencia dlgVBoxLayout abre un contexto de presentación con cuadro vertical para la sentencia dada.

Por defecto, un dlgDialog contiene un dlgVBoxLayout, por lo que un cuadro de diálogo sencillo no tiene que encargarse de la presentación.

Ejemplo

dlgVBoxLayout {
  dlgLabel("Box 1");
  dlgLabel("Box 2");
  dlgLabel("Box 3");
  }

Información de presentación

Todos los objetos en un cuadro de diálogo de idioma del usuario se colocan dentro del contexto de presentación.

Los contextos de presentación pueden ser de rejilla, horizontales o verticales.

Contexto de distribución de la rejilla

Los objetos de un contexto de distribución de la rejilla deben especificar las coordenadas de la celda o celdas en las que se colocarán. Para colocar una etiqueta de texto en la fila 5, columna 2, debería escribir

dlgGridLayout {
  dlgCell(5, 2) dlgLabel("Text");
  }

Si el objeto abarca más de una celda, debe especificar las coordenadas de la celda de inicio y fin. Para colocar un grupo que se extienda desde la fila 1, columna 2 hasta la fila 3, columna 5, debería escribir

dlgGridLayout {
  dlgCell(1, 2, 3, 5) dlgGroup("Title") {
    //...
    }
  }

Contexto de distribución horizontal

Los objetos en un contexto de distribución horizontal se colocan de izquierda a derecha. Los objetos especiales dlgStretch y dlgSpacing se pueden utilizar para refinar aún más la distribución en el espacio disponible.

Para definir dos botones que se empujen hasta el borde derecho del cuadro de diálogo, debe escribir

dlgHBoxLayout {
  dlgStretch(1);
  dlgPushButton("+OK")    dlgAccept();
  dlgPushButton("Cancel") dlgReject();
  }

Contexto de distribución vertical

Los objetos de un contexto de distribución vertical siguen las mismas reglas que los de horizontal, excepto que se colocan de arriba a abajo.

Mezcla de contextos de presentación

Los contextos de presentación vertical, horizontal y de rejilla se pueden mezclar para crear la estructura de diseño del cuadro de diálogo que prefiera. Consulte todo el ejemplo para ver una demostración.

Las siguientes funciones se pueden utilizar con cuadros de diálogo de idioma del usuario:

dlgAccept()

Función

Cierra el cuadro de diálogo y acepta su contenido.

Sintaxis

void dlgAccept([ int Result ]);

Ver también dlgReject, dlgDialog, Un ejemplo completo

La función dlgAccept hace que dlgDialog se cierre y vuelva a aparecer cuando se haya completado la secuencia de la sentencia actual.

Los cambios en los valores del cuadro de diálogo se aceptarán y se copiarán en las variables proporcionadas al definir los objetos del cuadro de diálogo.

El Resultado opcional es el valor que devolverá el cuadro de diálogo. En condiciones normales, este valor debería ser un número entero positivo. Si no se especifica ningún valor, se establece por defecto en 1.

Tenga en cuenta que dlgAccept() no vuelve a la ejecución normal del programa, por lo que en una secuencia como

dlgPushButton("OK") {
  dlgAccept();
  dlgMessageBox("Accepting!");
  }

la sentencia que vaya después de dlgAccept() se seguirá ejecutando.

Ejemplo

int Result = dlgDialog("Test") {
               dlgPushButton("+OK")    dlgAccept(42);
               dlgPushButton("Cancel") dlgReject();
               };

dlgRedisplay()

Función

Vuelve a mostrar el cuadro de diálogo después de cambiar los valores.

Sintaxis

void dlgRedisplay(void);

Ver también dlgReset, dlgDialog, Un ejemplo completo

Se puede iniciar la función dlgRedisplay para actualizar inmediatamente dlgDialog después cambiar las variables que se han usado para definir los objetos del cuadro de diálogo.

Solo debe iniciar dlgRedisplay() si desea que el cuadro de diálogo se actualice mientras se ejecuta el código del programa. En el siguiente ejemplo, el estado se cambia a "Ejecutando..." y se debe iniciar dlgRedisplay() para que este cambio se haga efectivo antes que la "acción del programa". Después de cambiar el estado final a "Finalizado", no es necesario iniciar dlgRedisplay(), ya que todos los objetos del cuadro de diálogo se actualizan automáticamente después de salir de la sentencia.

Ejemplo

string Status = "Idle";
int Result = dlgDialog("Test") {
               dlgLabel(Status, 1); // note the '1' to tell the label to be updated!
               dlgPushButton("+OK")    dlgAccept(42);
               dlgPushButton("Cancel") dlgReject();
               dlgPushButton("Run") {
                 Status = "Running...";
                 dlgRedisplay();
                 // some program action here...
                 Status = "Finished.";
                 }
               };

dlgReset()

Función

Restablece todos los objetos del cuadro de diálogo a sus valores iniciales.

Sintaxis

void dlgReset(void);

Ver también dlgReject, dlgDialog, Un ejemplo completo

La función dlgReset vuelve a copiar los valores iniciales en todos los objetos del cuadro de diálogo del dlgDialog actual.

Se descartarán todos los cambios en los valores del cuadro de diálogo.

Iniciar dlgReject() implica iniciar dlgReset().

Ejemplo

int Number = 1;
int Result = dlgDialog("Test") {
               dlgIntEdit(Number);
               dlgPushButton("+OK")    dlgAccept(42);
               dlgPushButton("Cancel") dlgReject();
               dlgPushButton("Reset")  dlgReset();
               };

dlgReject()

Función

Cierra el cuadro de diálogo y rechaza su contenido.

Sintaxis

void dlgReject([ int Result ]);

Ver también dlgAccept, dlgReset, dlgDialog, Un ejemplo completo

La función dlgReject hace que dlgDialog se cierre y vuelva a aparecer cuando se haya completado la secuencia de la sentencia actual.

Se descartarán todos los cambios en los valores del cuadro de diálogo. Las variables definidas al establecer los objetos del cuadro de diálogo volverán a sus valores originales cuando vuelva el cuadro de diálogo.

El Resultado opcional es el valor que devolverá el cuadro de diálogo. En condiciones normales, este valor debería ser 0 o un número entero negativo. Si no se especifica ningún valor, el valor por defecto es 0.

Tenga en cuenta que dlgReject() no vuelve a la ejecución normal del programa, por lo que en una secuencia como

dlgPushButton("Cancel") {
  dlgReject();
  dlgMessageBox("Rejecting!");
  }

la sentencia que vaya después de dlgReject() se seguirá ejecutando.

Iniciar dlgReject() implica iniciar* dlgReset()*.

Ejemplo

int Result = dlgDialog("Test") {
               dlgPushButton("+OK")    dlgAccept(42);
               dlgPushButton("Cancel") dlgReject();
               };

dlgSelectionChanged()

Función

Indica si la selección actual de un dlgListView o dlgListBox ha cambiado.

Sintaxis

int dlgSelectionChanged(void);

Devuelve

La función dlgSelectionChanged devuelve un valor distinto de cero en caso de que solo haya cambiado la selección de la lista.

Ver también dlgListView, dlgListBox

La función dlgSelectionChanged se puede utilizar en un contexto de lista para determinar si se ha iniciado la sentencia dlgListView o dlgListBox porque el usuario ha hecho doble clic en un elemento, o si solo ha cambiado la selección actual de la lista.

Si la sentencia de un dlgListView o dlgListBox no intenta iniciar dlgSelectionChanged, dicha sentencia sólo se ejecuta cuando el usuario hace doble clic en un elemento de la lista. Sin embargo, si un ULP necesita reaccionar ante los cambios de la selección actual de la lista, puede iniciar dlgSelectionChanged en la sentencia de la lista. Esto hace que la sentencia también se inicie si cambia la selección actual en la lista.

Si al principio se selecciona un elemento de lista al abrir el cuadro de diálogo y la sentencia de la lista incluye el inicio de dlgSelectionChanged, la sentencia se ejecuta con dlgSelectionChanged y devuelve true para indicar el cambio inicial de "sin selección" a una selección real. Cualquier cambio posterior en las cadenas o en la selección de la lista no activará la ejecución automática de la sentencia. Es importante recordar esto en caso de que el elemento de lista actual controle otro objeto del cuadro de diálogo, por ejemplo, un dlgTextView que muestre una representación ampliada del elemento seleccionado actualmente.

Ejemplo

string Colors[] = { "red\tThe color RED", "green\tThe color GREEN", "blue\tThe color BLUE" };
int Selected = 0; // initially selects "red"
string MyColor;
dlgLabel(MyColor, 1);
dlgListView("Name\tDescription", Colors, Selected) {
  if (dlgSelectionChanged())
     MyColor = Colors[Selected];
  else
     dlgMessageBox("You have chosen " + Colors[Selected]);
  }

Secuencia de escape

Algunos caracteres tienen significados especiales en los textos de botones o etiquetas, por lo que deben evitarse si se van a mostrar literalmente. Para ello, debe anteponer una barra invertida al carácter, como en

dlgLabel("Miller \\& Co.");

Esto hará que "Miller & Co." aparezca en el cuadro de diálogo. Observe que aquí hay dos caracteres de barra invertida, ya que esta línea pasará primero por el analizador de idioma del usuario, que borrará la primera barra invertida.

Un ejemplo completo

A continuación se muestra un ejemplo completo de un cuadro de diálogo de idioma del usuario:

int hor = 1;
int ver = 1;
string fileName;
int Result = dlgDialog("Enter Parameters") {
  dlgHBoxLayout {
    dlgStretch(1);
    dlgLabel("This is a simple dialog");
    dlgStretch(1);
    }
  dlgHBoxLayout {
    dlgGroup("Horizontal") {
      dlgRadioButton("&Top", hor);
      dlgRadioButton("&Center", hor);
      dlgRadioButton("&Bottom", hor);
      }
    dlgGroup("Vertical") {
      dlgRadioButton("&Left", ver);
      dlgRadioButton("C&enter", ver);
      dlgRadioButton("&Right", ver);
      }
    }
  dlgHBoxLayout {
    dlgLabel("File &name:");
    dlgStringEdit(fileName);
    dlgPushButton("Bro&wse") {
      fileName = dlgFileOpen("Select a file", fileName);
      }
    }
  dlgGridLayout {
    dlgCell(0, 0) dlgLabel("Row 0/Col 0");
    dlgCell(1, 0) dlgLabel("Row 1/Col 0");
    dlgCell(0, 1) dlgLabel("Row 0/Col 1");
    dlgCell(1, 1) dlgLabel("Row 1/Col 1");
    }
  dlgSpacing(10);
  dlgHBoxLayout {
    dlgStretch(1);
    dlgPushButton("+OK")    dlgAccept();
    dlgPushButton("Cancel") dlgReject();
    }
  };